2014-06-27 93 views
48

我使用Nginx的爲需要的請求,然後做了proxy_pass擺脫端口8001Nginx的反向代理造成504網關超時

運行如果我去mywebsite上游服務器的實際Web應用程序反向代理。 com或做一個wget,60秒後我得到一個504網關超時...但是,如果我加載mywebsite.com:8001,應用程序按預期加載!

因此,一些被禁止的nginx與上游服務器進行通信......

這一切開始後,我的託管公司復位機我的東西是上運行,在此之前,沒有任何問題都沒有。

這裏是我的虛擬主機服務塊:

server { 

     listen 80; 
     server_name mywebsite.com; 

     root /home/user/public_html/mywebsite.com/public; 

     access_log /home/user/public_html/mywebsite.com/log/access.log upstreamlog; 
     error_log /home/user/public_html/mywebsite.com/log/error.log; 

     location/{ 

        proxy_pass http://xxx.xxx.xxx.xxx:8001; 
        proxy_redirect off; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

        } 

     } 

從我的Nginx的錯誤日誌輸出:

2014年6月27日13時10分58秒[錯誤] 31406#0 :* 1上行超時(110:連接超時),連接上行時,客戶端:xxx.xx.xxx.xxx,服務器:mywebsite.com,請求:「GET/HTTP/1.1」,上行:「http://xxx.xxx.xxx.xxx:8001/」,主機:「mywebsite.com」

+0

服務器運行SELinux嗎? – CrackerJack9

回答

86

大概可以再增加幾行增加到上游的超時時間。下面集的例子超時爲300秒:

proxy_connect_timeout  300; 
proxy_send_timeout   300; 
proxy_read_timeout   300; 
send_timeout    300; 
+0

我認爲增加超時很少是答案,除非您知道您的網絡/服務將始終或在某些情況下會非常緩慢地響應。現在幾乎沒有網絡請求應該需要幾秒鐘,除非你正在下載內容(文件/圖像) – Almund

+0

@Almund我以爲同樣的事情(幾乎沒有打擾嘗試這個),但無論出於什麼原因,這只是爲我工作。 (先前在60秒後超時,現在立即得到響應)。 –

+0

@Dax Fohl:這很好奇。我拉下了源代碼並快速瀏覽了一下,從我能看到的情況來看,設置proxy_pass的任何proxy_設置將會初始化一系列設置,我認爲這些設置將以不同的方式運行代理,所以也許設置任何東西都會給出相同的設置行爲。 – Almund

20

增加超時將不太可能解決你的問題,因爲,就像你說的,實際的目標Web服務器響應就好了。

我有這個相同的問題,我發現它與在連接上不使用保持活動有關。我不能真正回答這是爲什麼,但是,在清除連接頭我解決了這個問題,並請求被代理就好:

server { 
    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host  $http_host; 
     proxy_http_version 1.1; 
     proxy_set_header Connection ""; 
     proxy_pass http://localhost:5000; 
    } 
} 

看一看這個帖子這也解釋了它的詳細信息: nginx close upstream connection after request Keep-alive header clarification http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

+0

這是個好的答案 – yzT

+1

單線問題解決了幾個月的問題proxy_set_header連接「」;'大聲笑,不要使用runcloud – nodws