正向代理:代理客户端 —— 帮“用户”访问网站;
反向代理:代理服务器 —— 帮“服务器”接待用户。
类型 | 谁被代理? | 常见用途 | 示例 |
---|---|---|---|
正向代理 | 客户端 | 科学上网、内网访问外网 | VPN、Squid |
反向代理 | 服务端 | 域名绑定、负载均衡、安全隔离 | Apache、Nginx、Traefik |
也就是说:
正向代理:站在客户端一侧;
反向代理:站在服务端一侧。
反向代理(Reverse Proxy)
代理服务器位于网站的前端,代表网站接收来自用户的请求,再将请求转发给后端的真实服务器。
[客户端] → [反向代理服务器 (Apache/Nginx)] → [真实 Web 应用服务器]
举个例子:
比如你有一个服务在 127.0.0.1:3000,
但你想通过域名访问:https://test.example.com。
于是你在 Apache 中写了:
<VirtualHost *:80>
ServerName test.example.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
当浏览器访问 test.example.com 时:
Apache 接收请求(用户只知道它是“test.example.com”);
Apache 把请求转发到真正的后端(3000端口);
然后把后端返回的内容再交还给浏览器。
正向代理(Forward Proxy)
用户(客户端)访问不了目标网站,于是找一个代理帮忙转发请求。
[客户端] → [代理服务器] → [目标网站]
举个例子:
你在国内访问不了 example.com,
你配置了一个代理服务器(比如某个 VPN),
你的请求先发给代理 → 代理再帮你去请求 example.com → 返回结果给你。
对目标网站来说,它只看到“代理服务器”在访问,而看不到“你”是谁。
这就是 正向代理,代理的是“客户端”。