Android

Konfigurace chyby nginx a protokolu přístupu

Python on Azure: Part 2—Deploying Django services to Azure Web Apps | Azure Friday

Python on Azure: Part 2—Deploying Django services to Azure Web Apps | Azure Friday

Obsah:

Anonim

Nginx je open-source, vysoce výkonný HTTP a reverzní proxy server zodpovědný za zpracování zátěže některých z největších webů na internetu. Při správě webových serverů NGINX je jedním z nejčastějších úkolů, které provedete, kontrolu souborů protokolu.

Při řešení problémů se serverem nebo aplikací je velmi užitečné vědět, jak konfigurovat a číst protokoly, protože poskytují podrobné informace o ladění.

Nginx zapisuje záznamy svých událostí do dvou typů protokolů: protokoly přístupu a protokoly chyb. Protokoly přístupu zapisují informace o požadavcích klienta a protokoly chyb zapisují informace o problémech serveru a aplikací.

Tento článek popisuje, jak konfigurovat a číst protokoly přístupu a chyb Nginx.

Konfigurace protokolu přístupu

Kdykoli je zpracován požadavek klienta, vygeneruje Nginx v protokolu přístupu novou událost. Každý záznam události obsahuje časové razítko a obsahuje různé informace o klientovi a požadovaném prostředku. Protokoly přístupu vám mohou ukázat polohu návštěvníků, stránku, kterou navštěvují, kolik času na stránce stráví a mnohem více.

Směrnice log_format umožňuje definovat formát protokolovaných zpráv. Direktiva access_log umožňuje a nastavuje umístění souboru protokolu a použitý formát.

Nejzákladnější syntaxe direktivy access_log je následující:

access_log log_file log_format;

Kde log_file je úplná cesta k souboru protokolu a log_format je formát používaný souborem protokolu.

Protokol přístupu lze povolit v bloku direktiv http , server nebo location .

Ve výchozím nastavení je protokol přístupu globálně povolen ve směrnici http v hlavním konfiguračním souboru Nginx.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Pro lepší údržbu se doporučuje nastavit pro každý blok serveru samostatný soubor protokolu přístupu. Direktiva access_log nastavená ve směrnici server přepíše směrnici nastavenou ve směrnici http (vyšší úroveň).

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Pokud není zadán žádný formát protokolu, použije Nginx předdefinovaný kombinovaný formát, který vypadá takto:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Chcete-li změnit formát protokolování, přepište výchozí nastavení nebo definujte nové. Například pro definování nového formátu protokolování s názvem main, který rozšíří kombinovaný formát o hodnotu zobrazující hlavičku X-Forwarded-For přidejte do direktivy http nebo server následující definici:

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Chcete-li použít nový formát, zadejte jeho název po souboru protokolu, jak je uvedeno níže:

access_log /var/log/nginx/access.log custom;

Protokol přístupu poskytuje velmi užitečné informace. zabírá místo na disku a může ovlivnit výkon serveru. Pokud váš server nemá dostatek prostředků a máte zaneprázdněný web, možná budete chtít zakázat přístupový protokol. Chcete-li to provést, nastavte hodnotu direktivy access_log na:

access_log off;

Konfigurace protokolu chyb

Nginx zapisuje do souboru protokolu chyb zprávy o aplikačních a obecných chybách serveru. Pokud ve vaší webové aplikaci dochází k chybám, protokol chyb je prvním místem, kde začít s řešením problémů.

Direktiva error_log umožňuje a nastavuje umístění a úroveň závažnosti protokolu chyb. Má následující podobu a lze jej nastavit v rámci http , server nebo bloku location :

error_log log_file log_level

Parametr log_level nastavuje úroveň protokolování. Níže jsou uvedeny úrovně jejich závažnosti (od nízké po vysokou):

  • debug - ladění zpráv. info - Informační zprávy. notice - Oznámení. warn - Varování. error - Chyby při zpracování požadavku. crit - Kritické otázky. Vyžaduje okamžitou akci. alert - Upozornění. Je třeba okamžitě jednat. emerg - Nouzová situace. Systém je v nepoužitelném stavu.

Každá úroveň protokolu obsahuje vyšší úrovně. Pokud například nastavíte úroveň protokolování na warn , Nginx také zaznamená error , crit , alert zprávy a nové zprávy.

Pokud není log_level parametr log_level , je výchozí hodnota error .

Ve výchozím nastavení je direktiva error_log definována ve směrnici http uvnitř hlavního souboru nginx.conf:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Stejně jako u přístupových protokolů se doporučuje nastavit pro každý blok serveru samostatný soubor protokolu chyb, který přepíše nastavení zděděné z vyšších úrovní.

Chcete-li například nastavit protokol chyb domény.com, aby warn měli byste použít:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Kdykoli změníte konfigurační soubor, musíte restartovat službu Nginx, aby se změny projevily.

Umístění souborů protokolu

Ve většině distribucí Linuxu, jako jsou Ubuntu, CentOS a Debian, jsou přístupové a chybové protokoly standardně umístěny v adresáři /var/log/nginx .

Čtení a porozumění souborům protokolu Nginx

Soubory protokolu můžete otevírat a analyzovat pomocí standardních příkazů, jako je cat , less , grep , cut , awk atd.

Zde je příklad záznamu ze souboru přístupového protokolu, který používá výchozí kombinovaný formát protokolu Nginx:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Podívejme se, co znamená každé pole záznamu:

  • $remote_addr - 192.168.33.1 - IP adresa klienta provádějícího požadavek. $remote_user - - - HTTP Authenticated User. Pokud není nastaveno uživatelské jméno, zobrazí se toto pole - . - - Čas místního serveru. "$request" - "GET / - Typ požadavku, cesta a protokol. $status - 200 - Kód odpovědi serveru. $body_bytes_sent - 396 - Velikost odpovědi serveru v bajtech. "$http_referer" - "-" - URL odkazu. "$http_user_agent" - Mozilla/5.0… - Uživatelský agent klienta (webový prohlížeč).

Pomocí příkazu tail sledujte soubor protokolu v reálném čase:

tail -f access.log

Závěr

Soubory protokolu vám poskytují užitečné informace o problémech se serverem a o tom, jak návštěvníci interagují s vaším webem.

Nginx umožňuje konfigurovat protokoly přístupu a chyb podle vašich potřeb.

nginx