Základní odstraňování problémů s Nginx
Tento článek ukazuje některé základní odstraňování problémů pro Nginx, jeden z nejpopulárnějších HTTP serverů. Účelem je opravit některé z nejčastějších chyb, které se mohou vyskytovat ve vaší konfiguraci Nginx.
Vyhledat syntaktické chyby nebo varování v konfiguraci
Pomocí jednoduchého příkazu můžete ověřit stav konfiguračního souboru Nginx:$ sudo systemctl config nginx
Výstup ukáže, zda je konfigurační soubor správný, nebo pokud ne, zobrazí soubor a řádek, kde je problém.
$ 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
V případě, že ve svém systému nemáte servisní příkaz k dispozici, můžete se rozhodnout použít -t
Parametr Nginx, který také otestuje správnou syntaxi konfiguračního souboru a poté se pokusí otevřít soubory, na které se v konfiguraci odkazuje.$ sudo nginx -t
Zkontrolujte, zda je spuštěn Nginx
Chcete-li zkontrolovat stav služby Nginx, můžete použít následující příkaz:$ sudo systemctl status nginx
K ověření stavu služby můžete také použít obecné příkazy:$ sudo /etc/init.d/nginx status
Ověřte, zda jsou porty otevřené a služba naslouchá
Ověřte, že máte otevřené potřebné porty, a pro ověření, že služba Nginx přes ně naslouchá, můžete použít lsof
příkaz, ideálně na výchozích portech 80 a 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)
Zkontrolujte, zda Nginx zpracovává požadavky
Pokud Nginx skutečně naslouchá příslušným portům, dalším krokem je zkontrolovat, zda zpracovává požadavky, což lze provést pomocí curl
pomocí IP, URL nebo localhost, pokud vaše nastavení naslouchá na 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
Zkontrolujte protokoly
Zkontrolujte poslední protokoly služby Nginx.$ sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Kontrola oprávnění
Ujistěte se, že Nginx má příslušná oprávnění pro přístup k potřebným souborům.
$ 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
Znovu načtěte službu
V případě, že jste v konfiguračním souboru provedli změny, které nebyly použity, můžete službu znovu načíst, spustit nové procesy Nginx a jemně vypnout staré pracovníky, abyste se vyhnuli rychlému a agresivnímu vypnutí.$ sudo service nginx reload
kód> Pro rychlé vypnutí, které nečeká na ukončení procesů, můžete restartovat Nginx.$ sudo service nginx restart
Povolit režim ladění
V konfiguračním souboru (obvykle /etc/nginx/nginx.conf
) změnit úroveň protokolu pro error_log
směrnice:
server {
# stuff
error_log /var/logs/nginx/error.log debug;
# stuff
}
Můžete ladit pravidla přepisu, abyste viděli výsledky zpracování v protokolu chyb:
server {
# stuff
error_log /var/logs/nginx/error.log notice;
rewrite_log on;
# stuff
}
Ověřte překlad DNS
Pravidla na /etc/hosts
mají přednost před překlady DNS. DNS záznamy můžete ověřit pomocí:$ host -t A website.com
Můžete také zkontrolovat úplné rozlišení DNS:$ dig +trace website.com
Závěry
Toto jsou některé základní kroky pro odstraňování problémů s některými z nejčastějších chyb s Nginx. Pokud tyto kroky váš problém nevyřeší, můžete se také spolehnout na dokumentaci a využít tak velké popularity Nginx.