GNU/Linux >> Znalost Linux >  >> Linux

Jak opravit časový limit brány 504 na serveru Nginx

Používám NGINX mnoho. Nedávno jsem nasadil Node.js webová aplikace s NGINX jako reverzní proxy server pro něj. Jednou z klíčových funkcí aplikace je podpora importu dat pomocí excelových šablon. Netrvalo však dlouho a uživatelům nahrávajícím objemné soubory se začal zobrazovat Časový limit brány 504 chyba z NGINX .

[ Také by se vám mohlo líbit:Opravit chybu Nginx:entita požadavku 413 je příliš velká ]

Zobrazuje se vám stejná chyba? Nebojte se, mám vás na dosah. V tomto článku ukážu, jak opravit Časový limit brány 504 došlo k chybě zvýšením časového limitu požadavku v NGINX webový server.

Zvyšte časový limit požadavku v NGINX pro proxy server

Pokud používáte NGINX jako reverzní proxy pro aplikační server, jako je Node.js nebo webový server, jako je Apache nebo Gunicorn , pak můžete prodloužit časový limit požadavku nastavením následujících parametrů buď v http nebo server nebo místo směrnice.

Časový limit je v sekundách a zajišťuje, že musíte nastavit hodnoty časového limitu, které budou efektivně a efektivně fungovat pro vaše prostředí.

proxy_connect_timeout 75;
proxy_send_timeout 600;
proxy_read_timeout 600;

Z názvů direktiv lze snadno zjistit, jaký časový limit definují. proxy_connect_timeout direktiva uvádí časový limit pro vytvoření spojení s proxy serverem. Podle oficiální dokumentace NGINX by hodnota neměla překročit 75 sekund.

Další direktiva proxy_send_timeout definuje časový limit pro přenos požadavku na proxy server. Poslední direktiva proxy_read_timeout nastavuje časový limit pro čtení odpovědi z proxy serveru.

Nyní, když trochu rozumíte výše uvedeným direktivám, můžete je nakonfigurovat podle obrázku. V http kontextu, můžete je nastavit v hlavním konfiguračním souboru NGINX na adrese /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;
                
       }
}

V bloku umístění by vypadaly takto:

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

Uložte soubor a zavřete jej.

Chcete-li použít poslední změny, musíte restartovat NGINX službu.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Zvyšte časový limit požadavku v NGINX pro FastCGI

Pro FastCGI server, jako je PHP-FPM , můžete použít následující direktivu buď v http nebo server nebo místo :

fastcgi_connect_timeout 75;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;

V místě blok pro zpracování souborů PHP, můžete je definovat podle obrázku:

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

Nezapomeňte restartovat NGINX služby po provedení změn:

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Poznámka :Možná budete muset také provést nějaké změny konfigurace v php.ini a PHP-FPM konfigurační soubory fondu, zejména do max_execution_time a request_terminate_timeout direktivy.

A je to! V tomto článku jsme se podívali na to, jak zvýšit časový limit požadavku v NGINX k vyřešení časového limitu brány 504 chyba. Další informace najdete v dokumentaci NGINX. V případě jakýchkoli komentářů nás kontaktujte prostřednictvím formuláře pro zpětnou vazbu níže.


Linux
  1. Jak přesměrovat HTTP na HTTPS v Nginx

  2. Časový limit brány nginx 504

  3. Jak simulovat časový limit odpovědi serveru DNS?

  1. Jak nainstalovat Nginx na Ubuntu 20.04

  2. Jak nainstalovat Nginx na CentOS 8

  3. Jak nainstalovat Nginx na CentOS

  1. Jak hostovat webovou stránku na webovém serveru NGINX

  2. Jak skrýt záhlaví serveru Nginx

  3. Jak opravit časový limit brány 504 na Nginx