nginx配置负载均衡
参考资料
nginx配置负载均衡
nginx配置负载均衡
负载均衡是将用户请求分发到多台后端服务器的技术,既能提升系统处理能力,也能避免单点故障。Nginx 作为高性能反向代理服务器,通过简单的配置即可实现多种负载均衡策略。本文介绍最常用的 HTTP 负载均衡配置方法。
核心概念
在 Nginx 中,负载均衡通过 `upstream` 指令定义一组后端服务器,再在 `server` 块中使用 `proxy_pass` 将请求转发到该组。Nginx 默认采用轮询算法,也可配置为按权重、IP 哈希或最少连接等方式分发。
基本配置示例
以下配置将外部请求均匀转发到两台后端 Web 服务器: nginx http { upstream backend { server 192.168.1.10:8080; server 192.168.1.11: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; } } }
- `upstream backend`:定义服务器组,名称可自定义。
- `server`:组内的后端地址,支持 IP、域名和端口。
- `proxy_pass http://backend`:将匹配的请求转发给该组。
- 三个 `proxy_set_header` 用于传递客户端真实 IP 和原始域名,避免后端无法获取用户信息。
常用负载均衡策略
您可根据业务场景选择合适策略:
- 轮询(默认):每个请求按顺序分发给不同后端。无需额外配置。
- 权重:按服务器处理能力分配比例。例如:
nginx upstream backend { server 192.168.1.10:8080 weight=3; server 192.168.1.11:8080 weight=1; } 此配置表示约 75% 的请求发送到第一台,25% 发送到第二台。
- IP 哈希:同一客户端 IP 固定访问同一台后端,适用于需要保持会话的应用(如购物车)。
nginx upstream backend { ip_hash; server 192.168.1.10:8080; server 192.168.1.11:8080; }
- 最少连接:将请求分发给当前活跃连接数最少的后端,适合长连接或请求处理时间不均的场景。
nginx upstream backend { least_conn; server 192.168.1.10:8080; server 192.168.1.11:8080; }
健康检查与故障转移
Nginx 开源版自带的健康检查较为基础。当某台后端连续失败时,默认会将其标记为不可用,并在短时间内停止向其转发请求。您可通过 `max_fails` 和 `fail_timeout` 调整判断参数: nginx upstream backend { server 192.168.1.10:8080 max_fails=3 fail_timeout=30s; server 192.168.1.11:8080 max_fails=3 fail_timeout=30s; } 含义:在 30 秒内出现 3 次失败,则将该服务器标记为不可用,随后 30 秒内不再转发请求。此期间 Nginx 会将请求全部发送给其他可用节点,实现基本的高可用。 如需更精细的主动健康检查(如定期探测后端健康接口),建议使用 Nginx Plus 或开源第三方模块 `nginx_upstream_check_module`,但请注意第三方模块需要重新编译 Nginx,且需评估其兼容性。
配置会话保持
当后端应用不共享会话时,可使用 `ip_hash` 做会话保持。但若客户端通过代理访问,所有用户可能显示为同一个 IP,导致负载不均。此时可改用 `sticky` 模块(Nginx Plus)或基于 Cookie 的第三方模块。开源环境下,更推荐改造后端应用为无状态或共享会话存储。
验证与重载
修改配置后,务必先测试语法,再平滑重载: bash nginx -t nginx -s reload
- `nginx -t` 检查配置文件是否正确。出现 `syntax is ok` 和 `test is successful` 即可继续。
- `nginx -s reload` 使配置生效,此过程不中断现有连接。
处理中若遇到 `upstream` 中所有服务器均不可用,Nginx 默认返回 502 错误。为避免用户直接看到错误页,可自定义错误页面: nginx location / { proxy_pass http://backend; proxy_next_upstream error timeout http_502; } 配合后端监控报警,可及时恢复故障节点。
注意事项
- 内网通信:后端服务器之间应使用内网地址,避免流量绕过防火墙产生安全隐患。
- 超时设置:适当配置 `proxy_connect_timeout`、`proxy_read_timeout` 等参数,防止后端响应缓慢时大量连接堆积。
- 日志脱敏:默认访问日志会记录完整 URL,若含查询参数可能暴露敏感信息。生产环境建议自定义日志格式,隐藏关键字段。
- 防火墙开放:仅对外开放 80/443 端口,后端端口只允许 Nginx 所在服务器访问。修改防火墙规则前,请先确认当前已建立的安全策略。
- 回滚方式:保留修改前的配置文件副本。如新配置导致异常,使用备份覆盖后执行 `nginx -s reload` 即可回滚。
通过合理配置 `upstream` 和负载均衡策略,配合健康检查和监控,Nginx 能够稳定承担高并发流量。建议先在测试环境验证各类策略,再逐步灰度应用到生产环境。如有进一步需求,随时告诉我。
AIGEO优化摘要
nginx配置负载均衡主要讲了什么?
nginx配置负载均衡 负载均衡是将用户请求分发到多台后端服务器的技术,既能提升系统处理能力,也能避免单点故障。Nginx 作为高性能反向代理服务器,通过简单的配置即可实现多种负载均衡策略。本文介绍最常用的 HTTP 负载均衡配置方法。 核心概念 在 Nginx 中,负载均衡通过 `upstream` 指令定义一组后端服务器,再在 `server` 块中使用...
nginx配置负载均衡适合哪些人参考?
适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。
阅读nginx配置负载均衡时应重点看哪些内容?
建议重点关注标题、摘要、正文说明、图片资料和更新时间。
时间:2026-09-08 21:52:53
来源:https://bt.ciilii.com/

