GNU/Linux >> Linux Esercitazione >  >> Linux

Come risolvere il timeout del gateway 504 nel server Nginx

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.


Linux
  1. Come reindirizzare da HTTP a HTTPS in Nginx

  2. Come installare Nginx su Ubuntu 20.04

  3. Come installare Nginx su CentOS 8

  4. Timeout del gateway nginx 504

  5. Come simulare il timeout di risposta del server DNS?

Come installare NGINX su Ubuntu 20.04

Come installare Nginx su CentOS 7

Come installare Nginx su Debian 8.2 Cloud Server

Come configurare NGINX su un server CentOS 7

Come configurare la cache Nginx sul server LEMP

Come nascondere la versione del tuo server NGINX.