Невозможно изменить тайм-аут NGINX

Невозможно изменить тайм-аут NGINX

Я получаю тайм-аут 504 на моем сервере Nginx: 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.net/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 в файле конфигурации, просто чтобы убедиться, что изменения других вещей в файле конфигурации были подхвачены, и, конечно же, изменение этого числа изменяет количество worker'ов, поэтому файл становится правильным файлом, и изменения подхватываются 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;

Связанный контент