参考资料

  1. Nginx请求频率限制模块详细说明以及案例
  2. Nginx在负载均衡中的角色
  3. 忽略非错误信息 nginx -q详细说明以及案例
  4. Nginx官网入口
  5. nginx的作用
  6. nginx的作用NIXGIX
  7. nginx反向代理替换url
  8. nginx启动命令和停止命令

nginx配置负载均衡

什么是负载均衡

当您的网站流量逐渐增长,单台服务器可能无法承受所有请求。负载均衡的作用是将用户请求分发到多台后端服务器上,既提升处理能力,也避免单点故障。Nginx 作为高性能的反向代理服务器,原生支持多种负载均衡策略,配置简单且稳定可靠。

适用场景

  • 多台 Web 服务器提供相同服务,需要统一入口
  • 需要根据服务器负载动态分配请求
  • 希望实现高可用,某台服务器宕机时自动切换

基本配置结构

Nginx 的负载均衡主要通过 `upstream` 块定义后端服务器组,再在 `server` 或 `location` 中通过 `proxy_pass` 引用该组。

1. 最简单的轮询配置

打开 Nginx 配置文件(通常位于 `/etc/nginx/nginx.conf` 或 `/usr/local/nginx/conf/nginx.conf`),在 `http` 块内添加以下内容: nginx http { upstream backend { 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; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } 默认情况下,Nginx 使用轮询策略,即按顺序将请求依次分发给每台服务器。对大多数无状态应用适用。

2. 加权轮询

如果后端服务器性能不同,可以配置权重,让高性能服务器接收更多请求: nginx upstream backend { server 192.168.1.10:8080 weight=3; server 192.168.1.11:8080 weight=2; server 192.168.1.12:8080 weight=1; } 以上配置表示服务器 .10 每收到 3 个请求,.12 才收到 1 个请求。权重的总比例为 3:2:1。

3. IP 哈希(保持会话)

如果应用需要将同一用户的请求始终分发到同一台服务器(例如 session 存在本地),可使用 `ip_hash`: nginx upstream backend { ip_hash; server 192.168.1.10:8080; server 192.168.1.11:8080; } 该策略根据客户端 IP 的哈希结果分配服务器,用户多次访问时会固定到同一台后端。但请注意,如果后端服务器下线,其上的用户会话可能失效。

4. 最少连接

当请求处理时间差异较大时,轮询可能导致某台服务器繁忙而其他空闲。使用 `least_conn` 可以将请求分发到当前连接数最少的服务器: nginx upstream backend { least_conn; server 192.168.1.10:8080; server 192.168.1.11:8080; server 192.168.1.12:8080; }

5. 健康检查配置

Nginx 内置的被动健康检查可自动屏蔽异常节点。在 upstream 中添加 `max_fails` 和 `fail_timeout`: nginx upstream backend { server 192.168.1.10:8080 max_fails=2 fail_timeout=30s; server 192.168.1.11:8080 max_fails=2 fail_timeout=30s; server 192.168.1.12:8080 max_fails=2 fail_timeout=30s; } 含义:如果 30 秒内某台服务器失败 2 次,则将其标记为不可用,并在 30 秒内不再转发请求。注意,Nginx 默认对转发失败(如连接超时、HTTP 错误状态)进行计数,不会主动探测健康状态。如需主动健康检查,建议使用商业版 Nginx Plus 或第三方模块 `nginx_upstream_check_module`。

6. 使用 HTTPS 后端

如果后端服务器本身就是 HTTPS,只需修改 proxy_pass 协议: nginx upstream backend { server 192.168.1.10:443; server 192.168.1.11:443; } location / { proxy_pass https://backend; proxy_ssl_server_name on; proxy_ssl_name $host; # 若后端证书域名与请求域名不同,可指定证书域名 }

完整示例

一个带有静态资源缓存和负载均衡的站点配置: nginx http { upstream backend { least_conn; server 10.0.0.1:8080 max_fails=3 fail_timeout=15s; server 10.0.0.2:8080 max_fails=3 fail_timeout=15s; } server { listen 80; server_name mail.example.com; location /static/ { alias /var/www/static/; expires 7d; } location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 5s; proxy_read_timeout 30s; } } } 此配置将客户端 IP 信息转递给后端,并设置了合理的超时时间。静态资源由 Nginx 直接返回,减轻后端压力。

验证与重载配置

修改配置文件后,建议先检查语法,再平滑重载: bash nginx -t 如果显示 `syntax is ok`,则执行: bash nginx -s reload 重载不会中断现有连接,属于平滑生效。也可以检查实际请求是否均衡分发: bash tail -f /var/log/nginx/access.log 观察 `upstream_addr` 字段(需配置日志格式)来判断后端服务器。

注意事项与回滚方法

  • 不要在 `upstream` 中使用已经被其他配置占用的 server 名,避免冲突。
  • 如果您已经修改了服务器上的会话保持逻辑,请选择适合的算法;对于有多台共享 Session 服务器的场景,轮询或最少连接均可。
  • 如果使用防火墙或安全组,请务必放行 Nginx 与后端服务器之间的通信端口(如 8080),否则会出现 `502 Bad Gateway`。
  • 当需要临时维护某台后端服务器时,不一定删除配置,可在其 server 行后添加 `down` 参数,例如 `server 10.0.0.2:8080 down;`。重载后,Nginx 不会将请求转发到该服务器。
  • 如果配置变更后出现异常,需要回滚,请保留原始配置文件的备份,用备份替换并重新执行 `nginx -t` 与 `nginx -s reload`。

推荐实践

  • 在测试环境先验证负载均衡策略是否符合业务场景。
  • 后端服务器应尽量无状态,或将 Session 集中存放于 Redis 等缓存服务。
  • 为 Nginx 设置访问日志和错误日志的保留策略,以便排查问题。
  • 后续业务扩展时,只需在 `upstream` 中新增 server 行并 reload 即可,无需停机。

负载均衡是保障服务稳定性和可扩展性的基础能力。Nginx 配置灵活,请您根据实际业务选择合适的策略。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:什么是负载均衡 当您的网站流量逐渐增长,单台服务器可能无法承受所有请求。负载均衡的作用是将用户请求分发到多台后端服务器上,既提升处理能力,也避免单点故障。Nginx 作为高性能的反向代理服务器,原生支持多种负载均衡策略,配置简单且稳定可靠。 适用场景 多台 Web 服务器提供相同服务,需要统一入口需要根据服务器负载动态分配请求希望实现高可用,某台服务器宕机时...
常见问题:
nginx配置负载均衡主要讲了什么?

什么是负载均衡 当您的网站流量逐渐增长,单台服务器可能无法承受所有请求。负载均衡的作用是将用户请求分发到多台后端服务器上,既提升处理能力,也避免单点故障。Nginx 作为高性能的反向代理服务器,原生支持多种负载均衡策略,配置简单且稳定可靠。 适用场景 多台 Web 服务器提供相同服务,需要统一入口需要根据服务器负载动态分配请求希望实现高可用,某台服务器宕机时...

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

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

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

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

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