無法更改 NGINX 超時
我的 Nginx 伺服器出現 504 超時:
504 Gateway Time-out
. 該網站允許使用者下載自定義數據文件。該網站在大多數情況下都能正常工作,使用者可以毫無問題地下載一些文件。問題是數據文件僅在請求時生成。因此,當請求復雜數據時,Python 後端需要一分鐘多的時間來生成文件並開始下載。因為在一分鐘內沒有響應 Nginx 返回一個504 Gateway Time-out
. 文件本身是 CSV 文件,不是很大,因此在後端生成文件後下載速度很快,但我需要一種方法讓 Nginx 等待更長時間。我正在尋找一種將 Nginx 超時從 1 分鐘增加到大約 10 分鐘的方法。
到目前為止,我已經嘗試過:
更改文件以在大括號
nginx.conf
之間包含以下行http {}
uwsgi_connect_timeout 75s; proxy_connect_timeout 600; proxy_send_timeout 600s; proxy_read_timeout 600s; fastcgi_send_timeout 600s; fastcgi_read_timeout 600s;
我還嘗試按照https ://asdqwe.net/blog/solutions-504-gateway-timeout-nginx/的建議添加一個
timeout.conf
文件:/etc/nginx/conf.d/
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
進行每次更改後,我都重新啟動了伺服器,但超時仍然在 1 分鐘後發生。這已通過
curl -o
在伺服器上執行以繞過任何服務提供商問題進行了進一步測試。輸出如下。$curl -o out-put-file.csv "./localhost/my/url" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 183 100 183 0 0 3 0 0:01:01 0:01:00 0:00:01 48
這個錯誤被寫入error.log
2018/03/26 09:55:15 [error] 10105#10105: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 142.1.2.3, server: localhost, request: "GET /my/url", upstream: "uwsgi://unix:/tmp/my-applacation.sock", host: "142.1.2.3"
當我在沒有 Nginx 的情況下執行我的應用程序並執行相同
curl -o
的應用程序時,請求需要很長時間(根據請求的數據最多需要 8 分鐘),但它確實可以正確完成,沒有錯誤或超時。執行
$ /usr/sbin/nginx -V 2>&1 | grep conf
顯示配置文件位於--conf-path=/etc/nginx/nginx.conf
Nginx 版本:nginx/1.12.2 和 nginx/1.4.6 (Ubuntu)
作業系統版本:Ubuntu 16.04.1 和 Ubuntu 14.04.5 LTS
編輯:
我已經測試了更改配置文件中worker_processes的數量,只是為了確保對配置文件中其他內容的更改確實被拾取,並且確定更改該數字會更改工作人員的數量,因此文件作業系統是正確的文件並更改為被 Nginx 接收。只是不更改超時(或者可能是完整的 http 部分?)。我還測試了將超時設置為 30 秒,但它們仍然在 1 分鐘時超時。此外,嘗試將這些設置放入,
sites-enabled/my_site
但我仍然得到相同的結果。編輯2:
據我所知,我正在根據 Nginx 文件正確設置值。 uwsgi_connect_timeout
我解決了!!
這個問題原來與uwsgi有關,而我已經設置了
uwsgi_connect_timeout 75s;
我實際上需要設置的是
uwsgi_read_timeout 600s;