必须配合upstream块使用,即在http块顶层定义服务器组(如backend_servers),再由proxy_pass引用该组名实现多后端分发;支持轮询、加权、ip_hash、least_conn等策略,并需透传X-Real-IP等关键请求头。

直接用 proxy_pass 指向单个地址,无法实现多台后端服务器的分发。真正把请求转发到多台后端服务器,必须配合 upstream 块使用。
必须用 upstream 定义服务器组
upstream 是 Nginx 实现负载均衡的核心机制,它把多个后端地址组织成一个逻辑组,proxy_pass 再引用这个组名,Nginx 才会自动轮询或按策略分发请求。
-
upstream块要和server块同级,都放在http块内 - 组名(如
backend_servers)是自定义的,后续在proxy_pass中直接引用 - 每个
server行可带参数,比如weight=3、backup或max_fails=2
基础负载均衡配置示例
以下是最简可用的多服务器转发结构:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
http {
upstream backend_servers {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
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_pass 后面跟的是 http://backend_servers(组名),不是 IP 地址;结尾不能加斜杠,否则会改变路径拼接行为。
常见负载策略怎么选
默认是轮询,但你可以根据场景加指令调整分发逻辑:
- 加权轮询:在
server行加weight=5,数值越大,分到的请求越多 - 最小连接:在
upstream块开头加least_conn;,适合请求处理时长差异大的服务 - IP 哈希:加
ip_hash;,确保同一客户端 IP 始终打到同一台后端,适用于有状态会话 - 健康检查:加上
max_fails=3 fail_timeout=30s,连续失败 3 次就暂停 30 秒,自动剔除异常节点
别漏掉关键代理头设置
如果不设这些头,后端可能拿不到真实客户端信息,甚至返回错误跳转:
-
proxy_set_header Host $host:避免后端因 Host 不匹配返回 404 -
proxy_set_header X-Real-IP $remote_addr:透传原始 IP,尤其在有 CDN 或中间代理时有用 -
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:兼容多层代理链路 -
proxy_set_header X-Forwarded-Proto $scheme:让后端知道当前是 http 还是 https,生成正确重定向地址

















