connect() failed (111: Connection refused) while connecting to upstream问题处理

本文分析了Nginx error日志中“Connection refused”错误的原因,包括服务端口不通、配置错误等,并提供了详细的排查和解决步骤,如telnet验证、检查配置文件及调整参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、【问题描述】

今天巡检Web服务器时,发现Nginx的error日志里,有许多报错信息,其中有一条如下显示:

[error] 2334#2334: *253268 connect() failed (111: Connection refused) 
while connecting to upstream, client: 172.12.23.44, server: 212.65.12.29, 
request: "OPTIONS /yun//sys/menu/nav?t=1583288052697 HTTP/1.1", 
upstream: "http://127.0.0.1:8060/yun/sys/menu/nav?t=1583288052697",
host: "212.65.12.29:8002", referrer: "http://39.107.238.105/yun-web/"

二、 【日志分析】

上述报错信息,表明172.12.23.44该地址请求平台资源时,转到后台127.0.0.1:8060上去了,请求客户端外网地址212.65.12.29:8002,即请求8002端口转发到后端的8060端口上去了,资源路径为/yun-web/,而日志中报请求资源时,无法连接;

问题可能有以下原因:

1)服务端口8060不通,前端web服务器到后台业务应用服务之间信息不通;可telnet ip 端口,来验证;确认网络通信正常,ip端口监听正常。
2)nginx配置文件中proxy_pass 地址配置有误,无法找到后端服务器;
3)查看web服务器socket是否正常启动:netstat -lnp|grep 8002(对外web服务端口);是否存在端口冲突;
4)如果日志中upstream后有fastcgi://或uwsgi://这样的信息,请检查php-fpm和uwsgi服务是否正常启动,检查php-fpm.conf配置文件pm.max_children最大线程数/队列数是否配置过小,适当调大后重试;另外检查fastcgi_pass的配置是否正确,/usr/local/php/sbin/php-fpm start;(一般常用nginx的话不会用php,该步骤可忽略),当然如果你的nginx里配置了php,可检查php的location配置,注意fastcgi_pass 是否配置正确,
5)检查location中的allow选项配置,排除权限问题;(一般如果之前正常,该问题几乎可忽略);如果nginx配置文件中有ALLOWED_HOSTS配置,可按如下:ALLOWED_HOSTS = ['服务器外网ip', '域名', '127.0.0.1'] 进行配置;

三、【问题处理】

我的现场实际是,nginx配置文件中的后台服务配置为了127.0.0.1,原先是单机部署,后已业务扩展改造为前后端分离,而该地址未改变,故本地无法请求到后端服务,将该地址修改为后端转发upstream的名称后,重启nginx正常。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羌俊恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值