配置NGINX作为双节点ARM负载均衡不生效,该如何排查问题?
NGINX双节点负载均衡配置不生效排查方向
你的基础负载均衡配置逻辑本身没有问题,不生效通常是以下可排查的问题:
- 未正确加载配置
修改配置后需要先执行语法校验命令nginx -t,确认返回test is successful后,再执行重载命令nginx -s reload或重启NGINX服务,修改才会生效。如果校验报错,需要先根据报错信息修正配置。 - 上游节点端口配置缺失
upstream块中填写的server地址默认使用80端口,如果你的两个ARM节点上的业务服务没有跑在80端口,需要显式指定端口,示例:upstream backend1 { server 192.168.1.3:你的业务端口; server 192.168.1.2:你的业务端口; } - 网络连通性异常
登录NGINX所在机器,依次测试到两个后端节点的网络连通性:- 测试网络可达:
ping 192.168.1.2、ping 192.168.1.3 - 测试业务端口可达:
telnet 192.168.1.2 你的业务端口或curl 192.168.1.2:你的业务端口
如果网络不通,需要先排查两端的防火墙、路由规则。
- 测试网络可达:
- 缺少必要的代理头配置
部分后端服务会依赖Host、客户端IP等请求头,没有配置的情况下可能返回异常,可以在location块补充以下配置:location / { proxy_pass http://backend1; 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配置基础上新增这段代码,注意不要重复定义http块,重复的http块会导致配置加载失败,只需要把upstream块和server块写到原有http块内部即可。 - 防火墙/安全策略拦截
检查NGINX所在机器的防火墙(iptables、firewalld)、SELinux规则,是否放开了80端口的入站访问,以及到后端节点的出站访问权限。
内容的提问来源于stack exchange,提问作者gaetano
相关产品推荐
相关产品推荐

