Nginx 反向代理配置要点

反向代理是 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 的地址。

超时时间

proxy_connect_timeout 5s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;

长连接或大文件下载场景需要调大 proxy_read_timeout,否则会出现 504。

上游分组

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 平滑生效。