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.