No se puede cambiar el tiempo de espera de NGINX

No se puede cambiar el tiempo de espera de NGINX

Obtengo un tiempo de espera 504 en mi servidor Nginx: 504 Gateway Time-out. El sitio web permite a los usuarios descargar archivos de datos personalizados. El sitio funciona bien en la mayoría de las condiciones y los usuarios pueden descargar algunos archivos sin problemas. El problema es que los archivos de datos sólo se generan cuando se solicitan. Entonces, cuando se solicitan datos complejos, el backend de Python tarda más de un minuto en generar el archivo e iniciar la descarga. Debido a que no hay respuesta en un minuto, Nginx devuelve un archivo 504 Gateway Time-out. Los archivos en sí son archivos CSV y no son muy grandes, por lo que las descargas son rápidas una vez que el backend ha generado el archivo, pero necesito una manera de hacer que Nginx espere más.

Estoy buscando una manera de aumentar el tiempo de espera de Nginx de 1 minuto a aproximadamente 10 minutos.

Hasta ahora lo he probado:

cambiando el nginx.confarchivo para incluir las siguientes líneas entre http {}llaves

uwsgi_connect_timeout 75s;
proxy_connect_timeout 600;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;

También intenté agregar un timeout.confarchivo /etc/nginx/conf.d/como lo sugierehttps://asdqwe.net/blog/solutions-504-gateway-timeout-nginx/:

proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600; 

Después de realizar cada cambio, reinicié el servidor pero el tiempo de espera aún ocurre después de 1 minuto. Esto se ha probado aún más ejecutando un curl -oen el servidor para evitar cualquier problema con el proveedor de servicios. El resultado fue el siguiente.

$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

Y este error se escribe en 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"

Cuando ejecuto mi aplicación sin Nginx y ejecuto la misma, curl -ola solicitud tarda bastante (hasta 8 minutos dependiendo de los datos solicitados) pero finaliza correctamente sin errores ni tiempo de espera.


La ejecución $ /usr/sbin/nginx -V 2>&1 | grep confmuestra que el archivo de configuración se encuentra en--conf-path=/etc/nginx/nginx.conf


Versión de Nginx: nginx/1.12.2 y nginx/1.4.6 (Ubuntu)

Versión del sistema operativo: Ubuntu 16.04.1 y Ubuntu 14.04.5 LTS


Editar:

He probado cambiar la cantidad de procesos_trabajadores en el archivo de configuración solo para asegurarme de que los cambios en otras cosas en el archivo de configuración se recogieran y, efectivamente, cambiar ese número cambia la cantidad de trabajadores para que el archivo sea el archivo correcto y cambie a ser recogido por Nginx. Simplemente no hay cambios en los tiempos de espera (¿o tal vez en la sección http completa?). También probé establecer los tiempos de espera en 30 segundos, pero aún así son de 1 minuto. Además, intenté poner estas configuraciones sites-enabled/my_sitepero sigo teniendo los mismos resultados.

Editar2:

Por lo que puedo decir, estoy configurando los valores correctamente de acuerdo con la documentación de Nginx. uwsgi_connect_timeout

ngx_http_proxy_module

Respuesta1

¡¡Lo solucioné!!

El problema resultó estar relacionado con uwsgi, mientras había configurado

uwsgi_connect_timeout 75s;

lo que realmente necesitaba configurar era

uwsgi_read_timeout 600s;

información relacionada