SorryToPerson logo
返回
Nginx2026-04-15·8 分钟

Nginx 反向代理与负载均衡

说明 Nginx 反向代理配置、upstream 负载均衡策略与常见优化技巧。

Nginx 反向代理与负载均衡

1. 基本反向代理配置

nginx
upstream backend {
  server 127.0.0.1:8080;
  server 127.0.0.1:8081;
}

server {
  listen 80;
  server_name api.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;
  }
}

2. 常见负载均衡策略

  • round_robin:默认,按顺序轮询。
  • least_conn:最少连接数。
  • ip_hash:基于客户端 IP 的会话保持。
nginx
upstream backend {
  least_conn;
  server 127.0.0.1:8080;
  server 127.0.0.1:8081;
}

3. 健康检查与故障转移

  • 内置 Nginx upstream 只能判断连接失败。
  • 可使用 ngx_http_healthcheck_module 或外部分布式健康检查方案。
nginx
upstream backend {
  server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
  server 127.0.0.1:8081 max_fails=3 fail_timeout=30s;
}

4. HTTPS 与代理头部

nginx
location / {
  proxy_pass https://backend;
  proxy_ssl_server_name on;
}
  • 为后端传递 HostX-Real-IPX-Forwarded-For
  • 需要 proxy_ssl_server_name on 才能使用 SNI。

5. WebSocket 代理

nginx
location /ws/ {
  proxy_pass http://backend;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}

6. 负载均衡优化建议

  • 对静态资源直接由 Nginx 提供。
  • 使用 keepalive 缓存后端连接。
  • 避免在高峰期频繁 proxy_pass 至不稳定后端。

7. 常见排错步骤

  1. nginx -t 检查语法。
  2. curl -I http://127.0.0.1/ 验证代理是否正常。
  3. 查看 error.log 诊断超时、DNS 或后端连接问题。
Nginx反向代理负载均衡