Come risolvere gli errori comuni di Nginx
introduzione
Esistono diversi metodi che puoi utilizzare per risolvere gli errori di Nginx. Tieni presente che questi metodi di risoluzione dei problemi sono intesi come punto di partenza e spesso sono necessarie ulteriori indagini per diagnosticare la causa principale di un problema. Mentre segui questo tutorial, gli errori stessi forniranno informazioni chiave che ti porteranno a una soluzione.
Questo tutorial esaminerà i seguenti comandi comunemente usati per risolvere i problemi di Nginx nella maggior parte delle distribuzioni Linux:
sudo cat /var/log/nginx/error.log
: viene utilizzato per stampare un registro con un elenco di errori e dettagli su di essi.sudo nginx -t
: viene utilizzato per verificare la presenza di errori di sintassi nel file di configurazione.systemctl status nginx
: viene utilizzato per verificare se il tuo servizio Nginx è attivo o inattivo.
Imparerai di più su questi comandi e su come usarli per la risoluzione dei problemi di vari errori Nginx.
Risoluzione dei problemi con il registro degli errori
Quando ricevi un errore da Nginx, non è sempre chiaro quale potrebbe essere il problema. Per questo motivo, un errore potrebbe essere collegato a un problema più ampio oa un problema completamente separato. Dipende dalla tua situazione specifica, la configurazione può variare. Per ottenere una panoramica completa degli errori Nginx che si verificano, eseguire il seguente comando per ricevere un elenco in esecuzione:
- sudo cat /var/log/nginx/error.log
È necessario eseguire questo comando come utente privilegiato. Ti consigliamo di utilizzare un utente abilitato a sudo
piuttosto che l'utente root. Il comando cat
sta per concatenate, che è usato per leggere il contenuto di un file e stamparlo nell'output del tuo terminale. In questo caso, cat
sta leggendo e stampando il contenuto del file /var/log/nginx/error.log
. Quando esegui questo comando, il tuo output restituirà un elenco di errori. Tieni presente che se non ci sono errori, il tuo prompt rimarrà vuoto. Ecco un esempio di log degli errori:
2022/11/28 23:58:22 [emerg] 168641#168641: invalid host in "[::]443" of the "listen" directive in /etc/nginx/sites-enabled/test.do-community.com:12
2022/11/28 23:59:44 [emerg] 168664#168664: invalid number of arguments in "root" directive in /etc/nginx/sites-enabled/test.do-community.com:4
2022/11/29 00:00:19 [emerg] 168701#168701: "server" directive is not allowed here in /etc/nginx/sites-enabled/test.do-community.com:6
Questo output del log degli errori fornisce informazioni chiave sull'errore specifico riscontrato. La prima parte di questo elemento del registro riporta in dettaglio la data e l'ora in cui si è verificato l'errore e il tipo di messaggio di errore. In questo caso, questo è il tipo di messaggio [emerg]
o di emergenza. Il componente finale di un elemento di log è costituito dal messaggio di errore stesso e, ove applicabile, dal file e dalla riga specifica in cui è possibile trovarlo.
Nel complesso, consultare il log degli errori di Nginx è utile se desideri più contesto sugli errori che potresti ricevere.
Controllo degli errori di sintassi
Uno degli errori più comuni con Nginx ha a che fare con la sintassi nel file di configurazione. Che si tratti di caratteri mancanti o di una struttura di sintassi errata, se la sintassi non è corretta, non funzionerà. Questo perché il file di configurazione è composto da varie direttive e deve essere dichiarato correttamente, altrimenti non saranno valide. Per verificare se sono presenti errori di sintassi, eseguire il seguente comando:
- sudo nginx -t
Questo comando dovrebbe essere eseguito da un utente privilegiato, consigliamo un utente abilitato a sudo
anziché l'utente root. Inoltre, il flag t
indica che questo testerà il file prima di eseguirlo effettivamente. Se la tua sintassi è corretta, riceverai il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
In caso contrario, riceverai un messaggio di errore simile agli esempi che condividiamo sul registro degli errori. Ecco cosa potrebbe restituire il tuo output se c'è un errore di sintassi:
[emerg] invalid host in "[::]443" of the "listen" directive in /etc/nginx/sites-enabled/test.do-community.com:12
nginx: configuration file /etc/nginx/nginx.conf test failed
Ti consigliamo di eseguire sempre questo comando di sintassi per verificare che non vi siano elementi mancanti o non validi nel file di configurazione. Inoltre, dovresti sempre eseguire sudo systemctl reload nginx
dopo aver apportato modifiche alla configurazione. Questo riavvierà Nginx e applicherà tutte le modifiche apportate.
Risoluzione dei problemi con systemctl status nginx
Un'altra opzione per la risoluzione degli errori di Nginx è verificare che questo servizio sia attivo e funzionante sul tuo sistema. È possibile che l'installazione sia incompleta o forse il servizio non è stato attivato. Puoi verificare se il tuo servizio Nginx è attivo o meno con il seguente controllo dello stato tramite il sistema di init systemd
:
- systemctl status nginx
Se il tuo servizio è in esecuzione, verrà letto come attivo (in esecuzione
nel tuo output:
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enable>
Active: active (running) since Tue 2022-11-29 16:37:49 UTC; 29s ago
Docs: man:nginx(8)
Process: 2679 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_proce>
Process: 2680 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (c>
Main PID: 2787 (nginx)
Tasks: 2 (limit: 1116)
Memory: 3.3M
CPU: 32ms
CGroup: /system.slice/nginx.service
├─2787 "nginx: master process /usr/sbin/nginx -g daemon on; master>
└─2790 "nginx: worker process"
Se il tuo servizio non è in esecuzione, verrà letto come inactive (dead)
nell'output:
○ nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enable>
Active: inactive (dead) since Tue 2022-11-29 16:42:27 UTC; 1s ago
Duration: 4min 38.006s
Docs: man:nginx(8)
Process: 2679 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_proce>
Process: 2680 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (c>
Process: 2915 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/>
Main PID: 2787 (code=exited, status=0/SUCCESS)
CPU: 39ms
Se ciò accade, è possibile che tu debba riavviare nuovamente il tuo servizio Nginx. Puoi farlo con il seguente comando:
- sudo systemctl restart nginx
Successivamente, puoi eseguire systemctl status nginx
per verificare che il tuo servizio sia di nuovo attivo. Se sei interessato a saperne di più su questi comandi di gestione di base, leggi il nostro tutorial, dove discutiamo su come gestire il processo Nginx.
Altri suggerimenti per la risoluzione dei problemi
Anche se abbiamo esaminato solo tre metodi per la risoluzione degli errori di Nginx, ecco un altro paio di esempi specifici per le impostazioni del firewall e della configurazione.
Regolazione delle impostazioni del firewall
Quando configuri Nginx, il tuo server per impostazione predefinita porta il traffico HTTP 80
. Se non hai questa porta aperta per ricevere queste richieste, il tuo sito web non funzionerà correttamente. A seconda della distribuzione, la regolazione delle impostazioni del firewall può variare. Questo esempio utilizzerà Uncomplicated Firewall (ufw). Per confermare se la tua porta è aperta, puoi controllare lo stato con quanto segue:
- sudo ufw status
Ancora una volta, è necessario un utente con privilegi e si consiglia un utente abilitato a sudo
anziché l'utente root. Se il tuo output restituisce quanto segue, significa che hai la porta 80
appropriata aperta, in particolare è elencato il profilo Nginx HTTP
:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Se devi aprire porte aggiuntive, ad esempio 443
per consentire il traffico HTTPS, puoi aggiungere la regola all'elenco:
- sudo ufw allow 'Nginx HTTPS'
In alternativa, puoi aggiungere entrambe le regole con il singolo profilo Nginx Full
:
- sudo ufw allow 'Nginx Full'
Per verificare che le tue porte siano aperte, esegui di nuovo sudo ufw status
e, se sono elencate, sei pronto per partire. Puoi anche controllare il tuo browser web per assicurarti che il tuo server sia attivo e funzionante.
Controllo del file di configurazione
Se stai utilizzando un server web Nginx, probabilmente hai impostato un blocco del server, soprattutto se hai seguito il nostro tutorial su Come installare Nginx. Per servire il contenuto HTML che desideri, dovresti avere un blocco di configurazione impostato per il tuo sito. Ecco un esempio di blocco del server con i dettagli di configurazione per il tuo dominio:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Quando aggiungi o aggiorni il file di configurazione, ricorda sempre di salvare quando hai finito. Se stai utilizzando l'editor di testo nano
, puoi farlo premendo CTRL + X
, Y
, quindi INVIO. Il modo principale per risolvere eventuali problemi con il file di configurazione è eseguire il controllo della sintassi
sudo nginx -t
menzionato in precedenza e abilitare tali modifiche riavviando Nginx con sudo systemctl restart nginx
.
Puoi sempre valutare il tuo file di configurazione aprendolo con il tuo editor di testo preferito, come nel seguente:
- sudo nano /etc/nginx/sites-available/your_domain
Ricorda che tutte le direttive che hai o aggiungi a questo file devono essere esatte, altrimenti riceverai un errore che qualcosa non è valido.
Conclusione
Questo tutorial ha fornito una guida di riferimento rapida su come risolvere gli errori comuni che potresti riscontrare con Nginx. Come ricorderete, questi comandi forniscono un primo passaggio per la diagnosi del problema, ma potrebbe essere necessario indagare ulteriormente sull'errore. Se non sei sicuro, tuttavia, puoi sempre iniziare controllando il registro degli errori di Nginx per voci dettagliate su ciascun errore. Se sei interessato a una spiegazione più completa di alcuni errori comuni di Nginx, puoi leggere i seguenti tutorial:
- Errori comuni di sintassi di Nginx
- Errori comuni di connessione a Nginx
- Errori di reindirizzamento HTTPS e certificato SSL Nginx