PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Soluzione all'errore 502 Bad Gateway e 504 Gateway Timeout Error sul server Linux

Yazdır

Soluzione all'errore 502 Bad Gateway e 504 Gateway Timeout Error sul server Linux

Una guida passo passo per risolvere i problemi di Nginx, Apache, PHP-FPM e timeout del servizio.

visto sui siti web errore di connessione 502 Bad Gateway E 504 Timeout del gateway gli errori in genere si verificano perché il server Web non riceve la risposta corretta dal servizio back-end. Questo servizio può essere PHP-FPM, backend Apache, applicazione Node.js, servizio API del pannello di gioco o un'altra applicazione dietro il proxy.

Questi errori sono particolarmente comuni nell'hosting, nel pannello di gioco, in WHMCS, Pterodactyl, nel pannello di amministrazione personalizzato e nei sistemi di avvio basati sul web.

Spiegazione semplice: Nginx è come l'addetto alla porta. Se il PHP o l'applicazione interna non risponde, mostrerà all'utente un errore 502 o 504.

1. Differenza tra errore 502 e 504

  • errore di connessione 502 Bad Gateway: Il server Web non riesce a connettersi al servizio backend o riceve una risposta confusa.
  • 504 Timeout gateway: Il servizio di backend sembra rispondere, ma la risposta non viene restituita in tempo.

Quindi 502 è più un arresto anomalo della connessione/servizio e 504 è un problema di lentezza o timeout.

2. Controllo degli stati del servizio

Innanzitutto, controlla se il server web e i servizi PHP sono in esecuzione.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

Sui sistemi CentOS, AlmaLinux o Rocky Linux, il servizio PHP-FPM può essere denominato:

systemctl status php-fpm
systemctl status httpd

Se il servizio è stato interrotto, riavvialo:

systemctl restart nginx
systemctl restart php-fpm

3. Revisione dei file di registro

Non è corretto procedere con supposizioni per gli errori 502 e 504. Il file di registro mostra la vera causa dell'errore.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

Sui sistemi basati su CentOS:

tail -n 100 /var/log/httpd/error_log

Nei log si possono vedere le seguenti dichiarazioni:

  • connect() non è riuscito: Impossibile connettersi al servizio backend.
  • timeout a monte: Il servizio backend risponde in ritardo.
  • Connessione rifiutata: Il servizio è inattivo o è stato effettuato l'inoltro alla porta sbagliata.
  • permesso negato: Si è verificato un problema con i permessi del socket o del file.

4. Socket PHP-FPM o controllo della porta

Nginx si connette a PHP-FPM tramite socket o porta. Il percorso PHP-FPM nel file di configurazione Nginx e il valore di ascolto PHP-FPM effettivo devono essere gli stessi.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

Ad esempio se Nginx utilizza:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Lo stesso socket dovrebbe essere ascoltato sul lato PHP-FPM:

listen = /run/php/php8.2-fpm.sock
Importante: Se la versione di PHP è cambiata, Nginx potrebbe ancora guardare il vecchio percorso del socket PHP-FPM. Questa è una delle cause più comuni degli errori 502.

5. Aumento delle impostazioni di timeout

Gli errori 504 possono essere ricevuti in pannelli di elaborazione di grandi dimensioni, mercati di gioco, API o script PHP a esecuzione lenta. I valori di timeout di Nginx possono essere aumentati.

nano /etc/nginx/nginx.conf

Al blocco http o al relativo blocco server possono essere aggiunti i seguenti valori:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

Testa le impostazioni e riavvia Nginx:

nginx -t
systemctl restart nginx

6. Verifica dei limiti del processo PHP-FPM

Quando il traffico aumenta, i limiti delle transazioni PHP-FPM potrebbero essere insufficienti. In questo caso, le richieste vengono accodate e si verifica un timeout.

nano /etc/php/8.2/fpm/pool.d/www.conf

Impostazioni di esempio:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

Questi valori dovrebbero essere adeguati in base alla quantità di RAM del server. L'impostazione di un valore troppo alto aumenta il consumo di RAM.

Errori comuni

  • Modifica delle impostazioni senza consultare il file di registro
  • Non aggiorna il percorso del socket Nginx anche se la versione di PHP è cambiata
  • Non correggere la query lenta effettiva aumentando il timeout
  • Aumento dei limiti PHP-FPM senza calcolare la RAM
  • Riavvio del servizio senza testare la configurazione di Nginx

Domande frequenti

L'errore 502 è sempre causato da Nginx?
No. Nginx è solo quello che mostra l'errore. Il vero problema potrebbe risiedere in PHP-FPM, nel backend Apache, nell'applicazione Node.js o in un altro servizio.

Aumentare il timeout è la soluzione definitiva per gli errori 504?
Non sempre. L’aumento del timeout fornisce un sollievo temporaneo. La vera soluzione è trovare la query lenta, l'elaborazione pesante o il problema delle prestazioni.

È sicuro riavviare PHP-FPM?
In genere è sicuro, ma le richieste attive potrebbero risentirne per un breve periodo. Nei sistemi molto trafficati si dovrebbero preferire gli orari a basso traffico.

Raccomandazioni sulle prestazioni

  • Controlla regolarmente la versione di PHP-FPM e il percorso del socket.
  • Esaminare i log delle query lente nel pannello Web e nei servizi API.
  • Se la RAM è insufficiente, non aumentare inconsciamente il valore PHP-FPM max_children.
  • Riduci il carico del backend utilizzando un sistema di cache.
  • Gestisci i log degli errori prima che crescano con logrotate.

Questo articolo è stato preparato appositamente per PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner