一、反向代理核心概念
反向代理(Reverse Proxy)作为客户端与后端服务器之间的中间层,主要实现:
- 隐藏真实服务器拓扑结构
- 实现负载均衡与故障转移
- 提供SSL终端卸载能力
- 缓存静态内容加速访问
二、基础配置实战
1. 最小化反向代理配置
server {
listen 80;
server_name proxy.example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
2. 多后端服务器负载均衡
upstream backend {
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080;
server 192.168.1.103:8080 backup;
}
server {
location / {
proxy_pass http://backend;
proxy_next_upstream error timeout invalid_header;
}
}
三、高级配置技巧
1. HTTPS终端代理
server {
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://backend;
proxy_ssl_verify off;
}
}
2. WebSocket代理配置
location /ws/ {
proxy_pass http://websocket_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
四、性能优化参数
参数 | 说明 | 推荐值 |
---|---|---|
proxy_buffer_size | 响应头缓冲区大小 | 8k-16k |
proxy_buffers | 响应内容缓冲区数量 | 8 4k |
proxy_connect_timeout | 连接后端超时 | 60s |
五、常见问题排查
- 502 Bad Gateway:检查后端服务状态和防火墙规则
- 代理后获取真实IP:确保配置
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
- Cookie丢失:添加
proxy_cookie_path / "/; Secure; HttpOnly; SameSite=Lax"
评论