Yo uso NGINX un monton. Recientemente implementé un Node.js aplicación web con NGINX como un servidor proxy inverso para ello. Una de las características clave de la aplicación es la compatibilidad con la importación de datos utilizando plantillas de Excel. Sin embargo, no pasó mucho tiempo antes de que los usuarios que cargaban archivos voluminosos comenzaran a recibir un 504 Gateway Timeout. error de NGINX .
[ También te puede interesar:Corregir el error de Nginx:413 Entidad de solicitud demasiado grande ]
¿Estás recibiendo el mismo error? No te preocupes, te tengo cubierto. En este artículo, mostraré cómo solucionar el 504 Gateway Timeout error al aumentar el tiempo de espera de la solicitud en NGINX servidor web.
Aumentar el tiempo de espera de solicitud en NGINX para un servidor proxy
Si está utilizando NGINX como proxy inverso para un servidor de aplicaciones como Node.js o un servidor web como Apache o Gunicornio , puede aumentar el tiempo de espera de la solicitud configurando los siguientes parámetros en http o servidor o ubicación directiva.
El tiempo de espera es en segundos y se asegura de que tenga que establecer valores de tiempo de espera que funcionen de manera eficaz y eficiente para su entorno.
proxy_connect_timeout 75; proxy_send_timeout 600; proxy_read_timeout 600;
A partir de los nombres de las directivas, es fácil saber qué tiempo de espera definen. El proxy_connect_timeout
La directiva establece un tiempo de espera para crear una conexión con un servidor proxy. Según la documentación oficial de NGINX, el valor no debe exceder 75 segundos.
La siguiente directiva proxy_send_timeout
define un tiempo de espera para transmitir una solicitud al servidor proxy. La última directiva proxy_read_timeout
establece un tiempo de espera para leer una respuesta del servidor proxy.
Ahora que tiene una ligera comprensión de las directivas anteriores, puede configurarlo como se muestra. En el http contexto, puede configurarlos en el archivo de configuración principal de NGINX ubicado en /etc/nginx/nginx.conf .
http{ .... proxy_read_timeout 600; proxy_connect_timeout 600; proxy_send_timeout 600; .... In the server context, you can define them in a server block file for your application for example /etc/nginx/conf.d/example.com.conf: server{ .... proxy_read_timeout 600; proxy_connect_timeout 600; proxy_send_timeout 600; location / { try_files $uri $uri/ /index.html =404 =403 =500; } location /api { proxy_pass http://127.0.0.1:5000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
En un bloque de ubicación, se verían así:
server{ .... location / { try_files $uri $uri/ /index.html =404 =403 =500; } location /api { proxy_pass http://127.0.0.1:5000; proxy_read_timeout 600; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Guarde el archivo y ciérrelo.
Para aplicar los cambios recientes, debe reiniciar NGINX servicio.
$ sudo systemctl restart nginx OR # systemctl restart nginx
Aumentar el tiempo de espera de solicitud en NGINX para FastCGI
Para un FastCGI servidor como PHP-FPM , puede usar la siguiente directiva en http o servidor o ubicación :
fastcgi_connect_timeout 75; fastcgi_send_timeout 600; fastcgi_read_timeout 600;
En una ubicación bloque para procesar archivos PHP, puede definirlos como se muestra:
location ~ .php$ { fastcgi_pass unix:/run/lib/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_connect_timeout 75; fastcgi_send_timeout 600; fastcgi_read_timeout 600; }
No olvides reiniciar el NGINX servicio después de hacer cambios:
$ sudo systemctl restart nginx OR # systemctl restart nginx
Nota :Es posible que también deba realizar algunos cambios de configuración en php.ini y PHP-FPM agrupar archivos de configuración especialmente para el max_execution_time
y request_terminate_timeout
directivas respectivamente.
¡Eso es todo! En este artículo, analizamos cómo aumentar el tiempo de espera de solicitud en NGINX para resolver el tiempo de espera de puerta de enlace 504 error. Para obtener más información, lea la documentación de NGINX. Para cualquier comentario, comuníquese con nosotros a través del formulario de comentarios a continuación.