参考资料

  1. nginx重启服务也需要重启吗
  2. 详细说明:针对特定攻击的防御
  3. NginxPHP服务器环境搭建详细说明以及案例
  4. Nginx重启脚本
  5. nginx负载均衡的三种方式
  6. nginx重启指定配置文件
  7. nginx反向代理替换url
  8. nginx反向代理配置详解

nginx配置负载均衡

Nginx 配置负载均衡

为什么需要负载均衡

当单台服务器的访问量逐渐增长,CPU、内存或带宽接近上限时,用户会明显感受到响应变慢甚至超时。负载均衡的核心作用,就是把进入的请求按照既定规则分发到多台后端服务器上,让每一台服务器都能处于合理的负载范围,从而提升整体服务的可用性与吞吐量。 Nginx 作为高性能的反向代理服务器,其内置的负载均衡模块稳定、轻量且配置简单,无需额外安装第三方组件,非常适合在 Web 服务入口直接使用。

前置准备

在动手配置前,请确认以下条件已满足:

  • 操作系统为 Linux(本文示例基于 Ubuntu/CentOS,命令通用)。
  • 已安装 Nginx(建议版本 1.18 及以上),可通过 `nginx -v` 查看版本。
  • 至少有两台可正常访问的后端服务器,例如内网 IP:`192.168.1.101` 与 `192.168.1.102`,均监听 80 端口。
  • 已有或临时准备一个测试域名,如 `www.example.com`(若无域名,可使用服务器 IP 测试)。

最小化配置示例

以下为最基础的 HTTP 负载均衡配置。将后端服务器放入 `upstream` 组,然后在 `server` 中使用 `proxy_pass` 指向该组。 nginx http { upstream backend { server 192.168.1.101:80; server 192.168.1.102:80; } server { listen 80; server_name www.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; } } } 主要配置项说明:

  • `upstream backend`:定义一组后端服务器,名称可自定义。
  • `server`:列出每台后端地址。
  • `proxy_pass http://backend;`:将匹配的请求转发到该组。
  • 三个 `proxy_set_header` 用于传递客户端真实 IP 与原始 Host,便于后端记录日志或做访问控制。

常用负载策略

#### 1. 轮询(默认) 不写任何策略时,Nginx 按请求顺序轮流分发到各后端。适用于后端服务器配置基本一致的场景。 #### 2. 权重(weight) 若服务器性能有差异,可让更高配置的机器承担更多请求: nginx upstream backend { server 192.168.1.101:80 weight=3; server 192.168.1.102:80 weight=1; } 如上配置表示每 4 个请求中,大约 3 个发往 101,1 个发往 102。 #### 3. IP 哈希(ip_hash) 同一客户端的请求会固定发往同一台后端,适用于需要保存本地 Session 的应用(但现代架构更推荐使用集中式 Session)。 nginx upstream backend { ip_hash; server 192.168.1.101:80; server 192.168.1.102:80; } #### 4. 最少连接(least_conn) 将新请求优先分配给当前活跃连接数最少的后端,适合请求处理时间差异较大的业务。 nginx upstream backend { least_conn; server 192.168.1.101:80; server 192.168.1.102:80; }

健康检查与故障摘除

默认情况下,Nginx 仅在网络层判断后端是否“可连接”。如果后端服务进程存在但应用返回 500 错误,Nginx 仍会继续转发。您可以使用 `max_fails` 与 `fail_timeout` 实现简单的被动健康检查: nginx upstream backend { server 192.168.1.101:80 max_fails=2 fail_timeout=10s; server 192.168.1.102:80 max_fails=2 fail_timeout=10s; } 上述参数表示:在 10 秒内如果与某台后端通信失败达到 2 次,则将该后端标记为不可用,并在接下来 10 秒内不再向其转发请求。示例为避免频繁重试而设的保守值,实际可按业务容忍度调整。 若需要主动探测后端健康状态(如检查具体 URL 的返回码),推荐使用商业版 Nginx Plus,或自行编译 `nginx_upstream_check_module` 第三方模块。该操作涉及 Nginx 重新编译,需谨慎评估维护成本。

配置完成后必须验证

每次修改配置后,都应在服务器上依次执行以下命令: bash

检查配置语法是否正确

nginx -t

使配置生效(平滑重载,不中断服务)

nginx -s reload 若 `nginx -t` 输出 `syntax is ok` 与 `test is successful`,即可重载。若提示错误,请根据提示定位配置文件行号并修正,然后再次执行上述命令。

验证负载均衡效果

您可以通过后端服务器的访问日志观察请求是否被分散。例如在两台后端上分别执行: bash tail -f /var/log/nginx/access.log 然后从外部访问 `http://www.example.com`(需配置 hosts 或 DNS),连续请求数次,正常情况下两台服务器的日志中都会出现访问记录。也可以使用 `curl -I http://www.example.com` 进行测试。

注意事项

  1. 后端会话保持问题:若未使用 `ip_hash` 或共享存储,同一个用户登录后可能因请求分发到不同后端而掉线。推荐使用 Redis 等外部会话存储,或在网关层使用基于 Cookie 的一致性哈希。
  2. 代理超时设置:默认 `proxy_read_timeout` 为 60 秒,如果后端处理耗时较长,需要显式增大,例如:

nginx location / { proxy_connect_timeout 5s; proxy_read_timeout 120s; }

  1. 避免暴露内网 IP:`proxy_pass` 指向的内网地址只应在 Nginx 配置中出现,请勿在页面或文档中泄露真实网络拓扑。
  2. 回滚方式:任何变更前建议备份原配置:`cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak`。若重载后出现异常,可使用备份文件恢复并再次 `nginx -t` 后执行 `nginx -s reload`。
  3. 防火墙与安全组:确保 Nginx 服务器能访问后端服务器的对应端口;后端服务器应仅允许来自 Nginx 内网 IP 的访问,不要暴露公网。

以上配置已在常见 Linux 发行版及 Nginx 1.18+ 环境中验证通过。您可根据实际业务规模、服务器性能与高可用要求调整权重或加入更多策略。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:Nginx 配置负载均衡 为什么需要负载均衡 当单台服务器的访问量逐渐增长,CPU、内存或带宽接近上限时,用户会明显感受到响应变慢甚至超时。负载均衡的核心作用,就是把进入的请求按照既定规则分发到多台后端服务器上,让每一台服务器都能处于合理的负载范围,从而提升整体服务的可用性与吞吐量。 Nginx 作为高性能的反向代理服务器,其内置的负载均衡模块稳定、轻量且配...
常见问题:
nginx配置负载均衡主要讲了什么?

Nginx 配置负载均衡 为什么需要负载均衡 当单台服务器的访问量逐渐增长,CPU、内存或带宽接近上限时,用户会明显感受到响应变慢甚至超时。负载均衡的核心作用,就是把进入的请求按照既定规则分发到多台后端服务器上,让每一台服务器都能处于合理的负载范围,从而提升整体服务的可用性与吞吐量。 Nginx 作为高性能的反向代理服务器,其内置的负载均衡模块稳定、轻量且配...

nginx配置负载均衡适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读nginx配置负载均衡时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:95/100
作者:王壹杰
时间:2026-09-08 21:12:28
来源:https://bt.ciilii.com/