connect() failed (111: Connection refused) while connecting to upstream問題處理

【問題描述】

今天巡檢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 端口,來驗證;
2)nginx配置文件中proxy_pass 地址配置有誤,無法找到後端服務器;
3)查看維保服務器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正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章