无法更改 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_module

答案1

我解决了!!

问题原来与 uwsgi 有关,而我已经设置了

uwsgi_connect_timeout 75s;

我实际上需要设置的是

uwsgi_read_timeout 600s;

相关内容