正向代理与反向代理
代理服务器是客户端与服务端之间的中间层,根据代理方向分为正向代理和反向代理。
正向代理
概念
- 代理服务器位于客户端一侧
- 代表客户端访问外部服务器
- 目标服务器不知道客户端真实 IP
- 常用于:翻墙、内网访问外部资源、匿名访问
nginx
客户端 → 正向代理服务器 → 外部目标服务器
Nginx 配置
nginx
resolver 8.8.8.8;
server {
listen 8080;
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header Host $http_host;
}
}
注意事项
- Nginx 正向代理需要配置
resolver指定 DNS 服务器- 不支持 CONNECT 方法(无法代理 HTTPS)
- 适合 HTTP 协议正向代理场景
反向代理
概念
- 代理服务器位于服务端一侧
- 代表后端服务器接收客户端请求
- 客户端不知道后端真实服务器地址
- 常用于:负载均衡、安全防护、动静分离、SSL 卸载
text
客户端 → 反向代理服务器 → 后端真实服务器
Nginx 配置
text
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
核心差异对比
| 对比项 | 正向代理 | 反向代理 |
|---|---|---|
| 代理对象 | 客户端 | 服务端 |
| 客户端感知 | 需手动配置代理 | 无感知(透明) |
| 服务端感知 | 不知道真实客户端 | 不知道被代理 |
| 主要用途 | 突破网络限制、匿名 | 负载均衡、安全、缓存 |
| 部署位置 | 客户端网络出口 | 服务端前端 |
| Nginx 支持 | 有限(需第三方模块完善) | 原生完整支持 |
反向代理常用指令
| 指令 | 作用 |
|---|---|
proxy_pass | 转发请求到后端服务器 |
proxy_set_header | 设置转发请求头 |
proxy_connect_timeout | 与后端建立连接超时时间 |
proxy_read_timeout | 等待后端响应超时时间 |
proxy_buffering | 是否启用响应缓冲 |
要点总结
- 正向代理代表客户端,反向代理代表服务端
- Nginx 主要用于反向代理场景,原生支持完善
- 正向代理需配置 resolver,且对 HTTPS 支持有限
- 反向代理核心指令:proxy_pass、proxy_set_header
- 反向代理可实现负载均衡、SSL 卸载、安全防护等功能
📝 发现内容有误?点击此处直接编辑