Nginx反向代理与负载均衡本质是upstream定义后端组+proxy_pass转发请求,无需额外模块;upstream必须置于http块内,proxy_pass引用其名称,配置后需nginx -t验证并reload生效。

Nginx 实现反向代理与负载均衡,本质是用 upstream 定义后端组 + proxy_pass 转发请求,不需要额外安装模块,只要 Nginx 是常规发行版(如 apt/yum 安装的稳定版),就已内置支持。
确认 upstream 模块是否可用
执行命令验证:
-
nginx -V 2>&1 | grep -o with-http_upstream_module—— 有输出说明已启用 - 若报错
unknown directive "upstream",说明编译时未包含该模块,需重装标准包(Ubuntu/Debian 用apt install nginx,CentOS/RHEL 用yum install nginx)
配置文件结构要规范
避免直接修改 /etc/nginx/nginx.conf 主文件,推荐分层管理:
- 在
/etc/nginx/conf.d/下新建load-balance.conf(必须以.conf结尾) - 检查主配置中是否有
include /etc/nginx/conf.d/*.conf;—— 没有就加上 -
upstream块必须放在http{}大括号内,不能嵌套在server或location中
写一个最小可用配置
以下为轮询模式示例,适用于两台后端服务(如 192.168.1.101:8080 和 192.168.1.102:8080):
upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
-
proxy_pass后面只写http://backend,不能加斜杠(http://backend/会报错) -
server_name多个域名用空格分隔,不要加逗号或多余空格 - 配置完务必运行
nginx -t测试语法,再systemctl reload nginx
选对策略才能真正均衡
不同业务场景对应不同调度方式,不能只写 weight 就以为流量按比例分配:
- 轮询(默认):不加任何参数,适合后端性能相近、无状态服务
-
加权轮询:写
server x.x.x.x:8080 weight=3;,权重是相对比值,不是绝对请求数 -
least_conn:在
upstream开头加least_conn;,适合长连接多、响应时间差异大的场景 -
ip_hash:加
ip_hash;实现会话保持,但 NAT 环境下易导致单点过载,慎用 - 健康检查非默认开启:建议每台
server行加上max_fails=2 fail_timeout=30s,避免故障节点持续收请求


















