GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo arreglar el tiempo de espera de la puerta de enlace 504 en el servidor Nginx

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.


Linux
  1. Cómo redirigir HTTP a HTTPS en Nginx

  2. Cómo instalar Nginx en Ubuntu 20.04

  3. Cómo instalar Nginx en CentOS 8

  4. tiempo de espera de puerta de enlace nginx 504

  5. ¿Cómo simular el tiempo de espera de respuesta del servidor DNS?

Cómo instalar NGINX en Ubuntu 20.04

Cómo instalar Nginx en CentOS 7

Cómo instalar Nginx en el servidor en la nube Debian 8.2

Cómo configurar NGINX en un servidor CentOS 7

Cómo configurar la caché de Nginx en el servidor LEMP

Cómo ocultar la versión de su servidor NGINX.