GNU/Linux >> Tutoriels Linux >  >> Linux

Comment réparer le délai d'expiration de la passerelle 504 dans le serveur Nginx

J'utilise NGINX beaucoup. J'ai récemment déployé un Node.js application Web avec NGINX en tant que serveur proxy inverse pour celui-ci. L'une des fonctionnalités clés de l'application est la prise en charge des importations de données à l'aide de modèles Excel. Cependant, il n'a pas fallu longtemps avant que les utilisateurs téléchargeant des fichiers volumineux commencent à recevoir un 504 Gateway Timeout erreur de NGINX .

[ Vous pourriez également aimer :Corriger l'erreur Nginx :413 Entité de requête trop grande ]

Obtenez-vous la même erreur ? Ne vous inquiétez pas, je vous ai couvert. Dans cet article, je vais montrer comment réparer le 504 Gateway Timeout erreur en augmentant le délai d'expiration de la requête dans le NGINX serveur Web.

Augmenter le délai d'expiration des requêtes dans NGINX pour un serveur proxy

Si vous utilisez NGINX en tant que proxy inverse pour un serveur d'application tel que Node.js ou un serveur Web tel que Apache ou Gunicorne , vous pouvez augmenter le délai d'expiration de la demande en définissant les paramètres suivants soit dans le http , ou serveur , ou lieu directives.

Le délai d'expiration est en secondes et garantit que vous devez définir des valeurs de délai d'expiration qui fonctionneront de manière efficace et efficiente pour votre environnement.

proxy_connect_timeout 75;
proxy_send_timeout 600;
proxy_read_timeout 600;

À partir des noms des directives, il est facile de dire quel délai d'attente elles définissent. Le proxy_connect_timeout indique un délai d'expiration pour la création d'une connexion avec un serveur proxy. Selon la documentation officielle de NGINX, la valeur ne doit pas dépasser 75 secondes.

La directive suivante proxy_send_timeout définit un délai d'attente pour transmettre une requête au serveur mandaté. La dernière directive proxy_read_timeout définit un délai d'attente pour la lecture d'une réponse du serveur mandataire.

Maintenant que vous avez une légère compréhension des directives ci-dessus, vous pouvez les configurer comme indiqué. Dans le http contexte, vous pouvez les définir dans le fichier de configuration principal de NGINX situé dans /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;
                
       }
}

Dans un bloc de localisation, ils ressembleraient à ceci :

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;
       }
}

Enregistrez le fichier et fermez-le.

Pour appliquer les modifications récentes, vous devez redémarrer le NGINX services.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Augmenter le délai d'expiration des requêtes dans NGINX pour FastCGI

Pour un FastCGI serveur tel que PHP-FPM , vous pouvez utiliser la directive suivante soit dans le http , ou serveur , ou lieu :

fastcgi_connect_timeout 75;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;

Dans un lieu bloc pour le traitement des fichiers PHP, vous pouvez les définir comme indiqué :

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;
}

N'oubliez pas de redémarrer le NGINX service après avoir apporté des modifications :

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Remarque  :Vous devrez peut-être également apporter des modifications à la configuration dans le fichier php.ini et PHP-FPM regrouper les fichiers de configuration en particulier au max_execution_time et request_terminate_timeout respectivement.

C'est ça! Dans cet article, nous avons examiné comment augmenter le délai d'expiration des requêtes dans NGINX pour résoudre le 504 Gateway timeout Erreur. Pour plus d'informations, lisez la documentation NGINX. Pour tout commentaire, contactez-nous via le formulaire de commentaires ci-dessous.


Linux
  1. Comment rediriger HTTP vers HTTPS dans Nginx

  2. Comment installer Nginx sur Ubuntu 20.04

  3. Comment installer Nginx sur CentOS 8

  4. Expiration de la passerelle nginx 504

  5. Comment simuler le délai de réponse du serveur DNS ?

Comment installer NGINX sur Ubuntu 20.04

Comment installer Nginx sur CentOS 7

Comment installer Nginx sur le serveur cloud Debian 8.2

Comment configurer NGINX sur un serveur CentOS 7

Comment configurer le cache Nginx sur le serveur LEMP

Comment masquer la version de votre serveur NGINX.