nginx 正向代理与反向代理
1. 正向代理(Forward Proxy)
正向代理是指 代理客户端 访问目标服务器,通常用于访问受限资源或隐藏客户端 IP。
工作原理
- 客户端请求代理服务器(如
nginx
)。 - 代理服务器代表客户端向目标网站发起请求。
- 目标网站返回内容给代理服务器。
- 代理服务器再将内容返回给客户端。
应用场景
- 科学上网:使用 VPN、代理服务器访问被封锁的网站。
- 缓存加速:代理服务器缓存资源,提高访问速度(如 Squid)。
- 匿名访问:隐藏客户端真实 IP,保护隐私。
nginx 配置正向代理
server {
listen 8080;
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 客户端需要手动 配置代理(如浏览器或系统代理)。
proxy_pass http://$http_host$request_uri;
让代理服务器转发客户端请求到目标服务器。
2. 反向代理(Reverse Proxy)
反向代理是指 代理服务器 代表 后端服务器 处理客户端请求,常用于负载均衡和安全防护。
工作原理
- 客户端向代理服务器(nginx)发送请求。
- 代理服务器转发请求到后端服务器(如
backend.example.com
)。 - 后端服务器处理请求,并返回给代理服务器。
- 代理服务器再将结果返回给客户端。
应用场景
- 负载均衡:分发请求到多个后端服务器,提高性能。
- 隐藏后端:避免直接暴露后端服务器,提高安全性。
- SSL 终结:nginx 处理 HTTPS,再用 HTTP 访问后端,减少后端加密开销。
- 缓存优化:nginx 作为缓存层,提高响应速度。
nginx 配置反向代理
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream backend_servers {
server 192.168.1.100:8080;
server 192.168.1.101:8080;
}
- 代理服务器 无需 客户端配置,用户只访问
example.com
。 proxy_pass http://backend_servers;
让 nginx 将请求转发到后端服务器。upstream
定义多个后端服务器,实现负载均衡。
3. 正向代理 vs 反向代理
对比项 | 正向代理(Forward Proxy) | 反向代理(Reverse Proxy) |
---|---|---|
代理对象 | 代理 客户端 访问外部资源 | 代理 后端服务器 处理请求 |
主要用途 | 科学上网、缓存加速、隐私保护 | 负载均衡、隐藏后端、SSL 终结 |
客户端配置 | 需要手动配置代理服务器 | 不需要额外配置,透明代理 |
安全性 | 保护客户端,隐藏真实 IP | 保护后端服务器,提高安全性 |
4. 总结
- 正向代理:代理 客户端 访问目标服务器,常见于 VPN、浏览器代理。
- 反向代理:代理 服务器 处理客户端请求,常用于负载均衡、后端保护。
如果你的目标是 访问外部资源,用 正向代理;如果是 优化和保护后端服务器,用 反向代理。