2016-09-30 53 views
0

短:nginx窗口10上游超時

如何在Windows上設置nginx的上游超時?

長:

我目前在Windows 10上,我有一個nginx問題。 所以問題是我想在我的開發機器上有兩個不同的上游,一個指向本地運行的Web服務器,另一個指向碼頭集裝箱。

upstream api { 
    server 127.0.0.1:9000; 
    server 192.168.99.100:9000; 
} 

location /api { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 
     proxy_pass http://api; 
     proxy_redirect off; 
} 

錯誤消息:

2016年9月30日19時56分56秒[錯誤] 9836#11440:* 154上游超時 (10060:一種連接嘗試失敗,因爲連接當連接 到上游,客戶端:127.0.0.1,服務器:本地主機,請求:「POST /api/v1」時,一方在一段時間後沒有正確響應,或者建立連接 失敗,因爲連接的主機未能響應)/demoText HTTP/1.1「,上游: 」http://127.0.0.1:9000/api/v1/demoText」,主持人:‘本地主機:9091’, 引用:‘http://localhost:9091/demo

所以,很明顯,nginx的拿了一箇中不存在,等待1分鐘超時。在Mac OS X和Linux下,它按預期工作,但不在windows下。

我的位置部分,但沒有成功

回答

0

試圖proxy_read_timeout 1;我會檢查你有泊塢窗容器(例如10.0.75.2)回在Windows端主機適配器之間的實際連接。在窗戶一側,適配器應該被稱爲vEthernet (DockerNAT)

接下來,檢查Windows防火牆(具有高級安全性的Windows防火牆)以確保您在那裏設置了正確的防火牆(應該有一些默認規則)。

最後(這似乎是每當docker有更新時重置),請查看是否更改適配器上的網絡類別。 這可能最好僅限於開發環境。您可以通過運行以下命令從運行admin的powershell中執行此操作:

Set-NetConnectionProfile -InterfaceAlias "vEthernet (DockerNAT)" -NetworkCategory Private