以下是Nginx配置反向代理的核心技巧,涵盖基础配置、优化策略及安全实践:
标准反向代理配置
使用proxy_pass指令将请求转发到后端服务器,配合proxy_set_header传递客户端真实信息(如IP、域名),确保后端能正确处理请求。
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
路径匹配转发
通过location指令匹配不同路径,将请求导向不同后端服务,例如将/api路径代理到API服务器,/static路径返回本地静态文件。
location /api/ {
proxy_pass http://api_server;
}
location /static/ {
root /var/www/html;
}
轮询(默认)
按顺序分配请求到后端服务器,适用于服务器性能相近的场景。
upstream backend_pool {
server 192.168.1.1:8080;
server 192.168.1.2:8080;
}
加权轮询
为服务器分配权重,性能强的服务器处理更多请求,通过weight参数设置。
upstream backend_pool {
server 192.168.1.1:8080 weight=3; # 处理3/4请求
server 192.168.1.2:8080 weight=1; # 处理1/4请求
}
IP哈希(会话保持)
根据客户端IP哈希值固定请求到同一台服务器,适用于需要会话状态的场景(如登录会话)。
upstream backend_pool {
ip_hash;
server 192.168.1.1:8080;
server 192.168.1.2:8080;
}
隐藏后端服务器信息
禁止后端服务器直接暴露真实IP,通过Nginx统一对外提供服务,避免被扫描攻击。
SSL/TLS加密
为HTTPS请求配置SSL证书,保护数据传输安全。
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
缓存优化
启用代理缓存减少后端压力,通过proxy_cache_path和proxy_cache指令配置缓存路径和有效期。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m;
location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
}
健康检查与容错
通过proxy_next_upstream和max_fails参数检测后端服务器状态,自动剔除故障节点。
upstream backend_pool {
server 192.168.1.1:8080 max_fails=3 fail_timeout=30s;
server 192.168.1.2:8080 max_fails=3 fail_timeout=30s;
}
动态代理池
结合第三方IP库(如ipipgo)实现动态住宅IP代理,通过proxy_pass指向代理服务器集群,并配置心跳检测。
location / {
proxy_pass http://gateway.ipipgo.io:10808;
proxy_set_header X-Real-IP $remote_addr;
}
按地域分流
根据请求头中的地域信息(如X-Target-Region)将请求导向不同地区的后端服务器,提升访问速度。
if ($http_x_target_region = "US-CA") {
proxy_pass http://ca_backend_server;
}
语法检查
使用nginx -t命令验证配置文件语法是否正确。
日志监控
通过access_log和error_log实时查看请求转发情况和错误信息,便于排查问题。
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;