Uso NGINX Un sacco. Di recente ho distribuito un Node.js applicazione web con NGINX come server proxy inverso per esso. Una delle caratteristiche principali dell'applicazione è il supporto per l'importazione di dati tramite modelli excel. Tuttavia, non ci volle molto prima che gli utenti che caricavano file voluminosi iniziassero a ricevere un timeout gateway 504 errore da NGINX .
[ Potrebbe piacerti anche:Correggi l'errore Nginx:413 Entità richiesta troppo grande ]
Ricevi lo stesso errore? Non preoccuparti, ti ho coperto. In questo articolo, mostrerò come correggere il timeout del gateway 504 errore aumentando il timeout della richiesta in NGINX server web.
Aumenta il timeout delle richieste in NGINX per un server proxy
Se stai usando NGINX come proxy inverso per un server delle applicazioni come Node.js o un server web come Apache o Unicorno , puoi aumentare il timeout della richiesta impostando i seguenti parametri in http o server o posizione direttiva.
Il timeout è in secondi e assicura che tu debba impostare valori di timeout che funzionino in modo efficace ed efficiente per il tuo ambiente.
proxy_connect_timeout 75; proxy_send_timeout 600; proxy_read_timeout 600;
Dai nomi delle direttive è facile capire quale timeout definiscono. Il proxy_connect_timeout
La direttiva indica un timeout per la creazione di una connessione con un server proxy. Secondo la documentazione ufficiale di NGINX, il valore non deve superare 75 secondi.
La prossima direttiva proxy_send_timeout
definisce un timeout per la trasmissione di una richiesta al server proxy. L'ultima direttiva proxy_read_timeout
imposta un timeout per la lettura di una risposta dal server proxy.
Ora che hai una leggera comprensione delle direttive di cui sopra, puoi configurarlo come mostrato. Nel http contesto, puoi impostarli nel file di configurazione principale di NGINX che si trova in /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; } }
In un blocco di posizione, avrebbero il seguente aspetto:
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; } }
Salva il file e chiudilo.
Per applicare le modifiche recenti, devi riavviare NGINX servizio.
$ sudo systemctl restart nginx OR # systemctl restart nginx
Aumenta il timeout delle richieste in NGINX per FastCGI
Per un FastCGI server come PHP-FPM , puoi utilizzare la seguente direttiva in http o server o posizione :
fastcgi_connect_timeout 75; fastcgi_send_timeout 600; fastcgi_read_timeout 600;
In una posizione blocco per l'elaborazione di file PHP, puoi definirli come mostrato:
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; }
Non dimenticare di riavviare NGINX servizio dopo aver apportato modifiche:
$ sudo systemctl restart nginx OR # systemctl restart nginx
Nota :Potrebbe anche essere necessario apportare alcune modifiche alla configurazione in php.ini e PHP-FPM pool di file di configurazione in particolare per max_execution_time
e request_terminate_timeout
rispettivamente le direttive.
Questo è tutto! In questo articolo, abbiamo esaminato come aumentare il timeout delle richieste in NGINX per risolvere il timeout del gateway 504 errore. Per ulteriori informazioni, leggere la documentazione di NGINX. Per qualsiasi commento, contattaci tramite il modulo di feedback qui sotto.