正向代理:用户端的“代购”
想象你在国外想买国内限购的商品,找了个代购买回来——这就是正向代理。它部署在客户端一侧,代表用户去访问目标服务器。比如公司员工通过正向代理访问外网,所有请求都先发给代理,由它出面获取资源再返回。
在这种模式下,服务端看到的是代理服务器的IP,而不是真实用户。为了防止滥用,通常会做认证控制,比如用户名密码或Token验证。只有通过认证的客户端才能使用代理服务。
curl -x http://proxy.example.com:8080 -U user:pass http://example.com这条命令就是典型的带认证的正向代理请求,-U 参数传递了登录凭证。
反向代理:服务端的“门卫”
反向代理则站在服务器这边,像是大楼的前台。用户不知道后面有多少台机器,只和这个“门卫”打交道。常见的Nginx、CDN节点其实都是反向代理。你访问淘宝时,请求先到最近的接入点,再由它转发给内部系统处理。
它的主要作用是负载均衡、缓存加速、安全防护。由于面向公网,一般不针对终端用户做登录认证,但可能对来源IP做白名单限制,或者在内部通信时启用双向TLS验证。
location /api/ {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}关键差异在哪?
正向代理服务的是“谁在用”,重点在用户身份管控;反向代理关心的是“怎么接请求”,侧重后端稳定与性能。一个藏住客户端,一个隐藏服务端。
举个生活例子:你用VPN翻墙,属于正向代理,需要账号登录才能连上;而你访问微信公众号文章,背后是腾讯的反向代理集群在调度流量,你自己完全无感。
两者都能做加密传输,也都支持各种认证机制,但应用场景完全不同。混淆它们,就像把快递员当成收件人一样搞错角色定位。