反向代理是 Nginx 最常见的用途,记录几个容易忽略的配置点。
server { listen 80; server_name api.example.com; location / { proxy_pass http://127.0.0.1:5000; 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; } }
缺少 X-Forwarded-* 头时,后端拿到的客户端 IP 会变成 Nginx 的地址。
X-Forwarded-*
proxy_connect_timeout 5s; proxy_read_timeout 60s; proxy_send_timeout 60s;
长连接或大文件下载场景需要调大 proxy_read_timeout,否则会出现 504。
proxy_read_timeout
upstream api_servers { server 10.0.0.11:5000; server 10.0.0.12:5000; } server { location / { proxy_pass http://api_servers; } }
改完配置先执行 nginx -t 校验,再 nginx -s reload 平滑生效。
nginx -t
nginx -s reload