一臺windows機器,只跑了nginx,作代理。
一臺linux服務器,lnmp環境,運行一個php網站。php
在windows的nginx上作了代理,nginx.conf配置文件相關參數並未調整什麼。第一天跑的很正常,次日出現了502,直接hosts綁定linux服務器的ip訪問沒有任何問題。linux
我相信,大多數人不會懷疑問題出在linux服務器上,畢竟綁定hosts直接訪問是沒有任何問題的。因此,在windows上折騰好久,不管重啓nginx服務仍是重啓系統,仍是502。nginx
查看windows上nginx的錯誤日誌error.log,發現不少「[error] 2420#2560: *27 WSARecv() failed (10054: An existing connection was forcibly closed by the remote host) while reading response header from upstream 」
這種日誌不多見,但能夠斷定問題出在linux服務器上。因而到linux服務器上打開錯誤日誌,惋惜並未發現什麼問題。 去搜google吧,也沒有找到好的解決辦法。windows
還好,我印象中之前遇到過一次相似的問題,不過是linux代理linux,症狀和該問題基本相似,當時的解決辦法是,修改被代理的linux服務器nginx配置文件nginx.conf中worker_connections參數的值,當時記得是51200,改成4096就ok了。服務器
到linux服務器上,打開nginx配置文件,發現worker_connections居然也是51200,改成4096後,重啓nginx服務。網站
驚喜再現,問題就這樣解決了!google
解決後,纔想到:應該在linux服務器上把error日誌的級別調整爲debug,就能夠看到更多信息了。
因爲是客戶的機器,就沒有再去折騰。debug