Risoluzione dei problemi di base di Nginx
Questo articolo mostra alcuni problemi di base per la risoluzione dei problemi per Nginx, uno dei server HTTP più popolari. Lo scopo è correggere alcuni degli errori più comuni che potrebbero essere presenti nella configurazione di Nginx.
Cerca errori di sintassi o avvisi nella configurazione
Tramite un semplice comando è possibile verificare lo stato del file di configurazione di Nginx:$ sudo systemctl config nginx
L'output mostrerà se il file di configurazione è corretto o, in caso contrario, mostrerà il file e la riga in cui si trova il problema.
$ sudo systemctl config nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl config nginx
"worker_connections" directive is not allowed here in /etc/nginx/nginx.conf:12
nginx: configuration file /etc/nginx/nginx.conf test failed
Nel caso in cui non disponi del comando di servizio disponibile nel tuo sistema, puoi scegliere di utilizzare il -t
parametro Nginx, che verifica anche la sintassi corretta del file di configurazione e quindi tenta di aprire i file a cui si fa riferimento nella configurazione.$ sudo nginx -t
Verifica che Nginx sia in esecuzione
Per controllare lo stato del servizio Nginx puoi usare il seguente comando:$ sudo systemctl status nginx
Puoi anche utilizzare i comandi generici per convalidare lo stato del servizio:$ sudo /etc/init.d/nginx status
Verifica che le porte siano aperte e che il servizio sia in ascolto
Verifica che le porte necessarie siano aperte e per verificare che il servizio Nginx sia in ascolto attraverso di esse puoi utilizzare lsof
comando, idealmente nelle porte predefinite 80 e 443.
$ sudo lsof -i :80 -s TCP:LISTEN
nginx 1305 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1305 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
Verifica se Nginx elabora le richieste
Se Nginx sta effettivamente ascoltando le porte appropriate, il passaggio successivo è verificare se sta elaborando le richieste, che possono essere effettuate utilizzando il curl
strumento utilizzando l'IP, l'URL o localhost se la configurazione è in ascolto su localhost:
$ curl -i http://127.0.0.1/nginx_status
HTTP/1.1 200 OK
Server: nginx/1.11.1
Date: Wed, 08 Aug 2021 11:36:43 GMT
Content-Type: text/plain
Content-Length: 97
Connection: keep-alive
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
Controlla i log
Controlla gli ultimi log del servizio Nginx.$ sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Controlla i permessi
Assicurati che Nginx disponga delle autorizzazioni appropriate per accedere ai file necessari.
$ namei -om /usr/share/nginx/html/index.html
f: /usr/share/nginx/html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html
Ricarica il servizio
Nel caso in cui tu abbia apportato modifiche al file di configurazione che non sono state applicate, puoi ricaricare il servizio, avviando nuovi processi Nginx e spegnendo delicatamente i vecchi worker per evitare uno spegnimento rapido e aggressivo.$ sudo service nginx reload
Per lo spegnimento rapido che non attende la fine dei processi, puoi riavviare Nginx.$ sudo service nginx restart
Abilita la modalità de debug
Nel file di configurazione (di solito /etc/nginx/nginx.conf
) cambia il livello di log per il error_log
direttiva:
server {
# stuff
error_log /var/logs/nginx/error.log debug;
# stuff
}
Puoi eseguire il debug delle regole di riscrittura per vedere i risultati dell'elaborazione nel registro degli errori:
server {
# stuff
error_log /var/logs/nginx/error.log notice;
rewrite_log on;
# stuff
}
Verifica la risoluzione DNS
Regole su /etc/hosts
avere la priorità sulle risoluzioni DNS. Puoi verificare i record DNS con:$ host -t A website.com
Puoi anche controllare la risoluzione DNS completa:$ dig +trace website.com
Conclusioni
Questi sono alcuni passaggi di base per la risoluzione dei problemi per alcuni degli errori più comuni con Nginx. Puoi anche fare affidamento sulla documentazione se questi passaggi non risolvono il tuo problema, sfruttando la grande popolarità di Nginx.