目录
一、检查nginx日志发现问题
二、尝试telnet验证服务器之间网络
三、开通端口, nginx日志恢复正常
四、本地验证upstream多节点超时连接重试下一节点机制
五、总结
正文
一、检查nginx日志发现问题。
tail -100f /usr/local/nginx/logs/error.log
发现问题需要打印error.log文件日志, 这次查看access.log日志访问无法发现连接异常的问题
二、尝试telnet验证服务器之间网络
在发现问题的nginx所在服务telnet连接超时的服务器ip地址
日志上发现上有(upstream)ip地址需要配置正确的log 日志打印格式 format
log_format main '$remote_addr - [$time_local] "$request" ' '$status ' '"$http_user_agent" "$http_x_forwarded_for" "$upstream_addr"'; access_log logs/access.log main;
- ping ip有的机器是不通的
会禁ping
用telnet
三、开通端口, nginx日志恢复正常找到网络运维工作的同事解决问题, 原因是内网服务器之间开启了端口访问策略, 配置上即可
四、 本地验证upstream多节点超时连接重试下一节点机制
- windows本地安装了nginx1.23.3
- 启动后端服务
这里只启动一个服务, 在nginx.conf中配置两个节点, 模拟网络不通的情况
- foxapi请求nginx代理端口8888请求成功
因为配置的upstream中节点会出现超时的情况, 多请求几次会出现卡顿的情况,这时是nginx在做轮询访问, 可在access.log日志中看到
- 在重试期间在access.log中打印重试日志
- 在重试期间在error.log中打印错误日志
五、 总结
- nginx会对连接超时的节点跳过, 轮询请求重试下一个节点。
- 配置多节点使用负载均衡可提高程序的高可用性。
非自身程序问题前提下, 如出现超时异常的情况
- 验证了重传机制。