無法更改 NGINX 超時

無法更改 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;

我還嘗試按照建議添加timeout.conf文件/etc/nginx/conf.d/https://asdqwe.n​​et/blog/solutions-504-gateway-timeout-nginx/:

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

ngx_http_proxy_模組

答案1

我解決了!

結果發現問題與uwsgi有關,而我已經設定了

uwsgi_connect_timeout 75s;

我實際上需要設定的是

uwsgi_read_timeout 600s;

相關內容