Jak nakonfigurovat protokolování a rotaci protokolů v Nginx na VPS s Ubuntu

Úvod

Logování hraje klíčovou roli při správě webového serveru. Poskytuje důležité údaje o provozu, případných chybách a bezpečnostních incidentech. Nginx, jako oblíbený open-source webový server, nabízí robustní možnosti logování, které administrátorům umožňují flexibilně konfigurovat a spravovat logy dle potřeb. Tento článek vám detailně ukáže, jak nastavit logování a rotaci logů v Nginx na virtuálním privátním serveru (VPS) s operačním systémem Ubuntu.

Nastavení logovacích souborů Nginx

Prvním krokem k nastavení logování Nginx je úprava hlavního konfiguračního souboru, který se obvykle nachází v /etc/nginx/nginx.conf. Najdete v něm blok server, který může vypadat podobně jako v příkladu:


server {
  ...
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;
  ...
}

V tomto kódu vidíte konfiguraci Nginx, která zapisuje přístupy do souboru /var/log/nginx/access.log a chyby do souboru /var/log/nginx/error.log. Umístění a pojmenování logovacích souborů si můžete samozřejmě přizpůsobit.

Formáty logů

Nginx podporuje různé formáty logování, mezi které patří:

  • Common Log Format (CLF): Je to standardní formát, který zaznamenává základní informace jako IP adresu klienta, čas dotazu, stav odpovědi a velikost odpovědi.
  • Combined Log Format: Rozšířený formát, který přidává informace o referenční URL a uživatelském agentovi klienta.
  • JSON Log Format: Zaznamenává logovací data ve strukturovaném JSON formátu.

Formát logu se dá definovat přidáním následujícího řádku do konfiguračního souboru Nginx:


log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

Tato definice vytváří vlastní formát logu, který zahrnuje IP adresu klienta, uživatelské jméno, čas dotazu, HTTP request, stav odpovědi, velikost odpovědi, referenční URL a informace o prohlížeči (user agent).

Rotace logů

Rotace logů je proces, kdy se staré logovací soubory nahrazují novými. To pomáhá šetřit místo na disku a předchází tomu, aby soubory logů narostly do enormní velikosti. V Nginx se rotace logů aktivuje direktivou log_rotate:


log_rotate on;

Tímto se zapne automatická rotace logů podle definovaných pravidel.

Pravidla rotace

Pravidla pro rotaci určují, jak často a jakým způsobem se logy otáčejí. Následující konfigurace nastaví rotaci logů na denní bázi a uchování maximálně 7 dní starých souborů:


log_rotate daily;
log_rotate 7;

Umístění rotovaných logů

Rotované logy se ukládají do podadresáře logs ve stejném adresáři, kde jsou i původní soubory. V našem případě se tedy rotované logy budou nacházet zde:

  • /var/log/nginx/logs/access.log.*
  • /var/log/nginx/logs/error.log.*

Testování logování a rotace

Po nastavení logování a rotace můžete jejich funkčnost otestovat pomocí těchto kroků:

  • Zaznamenání událostí: Navštivte svůj web nebo pošlete požadavky na Nginx server.
  • Ověření logovacích souborů: Podívejte se do souborů /var/log/nginx/access.log a /var/log/nginx/error.log, zda obsahují zaznamenané požadavky a chyby.
  • Spuštění rotace logů: Počkejte, až vyprší doba rotace (např. 1 den), nebo ručně spusťte rotaci pomocí nástroje logrotate:

sudo logrotate -f /etc/logrotate.conf

  • Kontrola rotovaných logů: Ujistěte se, že v adresáři /var/log/nginx/logs se objevily rotované soubory.

Závěr

Konfigurace logování a rotace logů v Nginx je klíčová pro monitorování aktivity serveru, odstraňování problémů a dodržování bezpečnostních standardů. S pomocí kroků uvedených v tomto článku můžete efektivně nastavit logování Nginx a rotaci logů, aby váš webový server spolehlivě zaznamenával a spravoval logovací soubory.

Časté dotazy

1. Jaké jsou výhody logování v Nginx?

  • Získáváte přehled o aktivitě serveru a případných chybách.
  • Pomáhá při diagnostice problémů a analýze výkonu.
  • Umožňuje sledování bezpečnosti a odhalování podezřelých aktivit.

2. Jaké informace se zapisují do logů Nginx?

  • Informace o požadavku (IP adresa klienta, čas požadavku, typ požadavku, cílová URL).
  • Informace o odpovědi (stav odpovědi, velikost odpovědi).
  • Informace o chybách (chybové kódy, stack trace).

3. Co je rotace logů?

  • Proces nahrazování starých logovacích souborů novými.
  • Pomáhá zabránit nadměrnému růstu logovacích souborů.

4. Jak zapnout rotaci logů v Nginx?

  • Přidejte direktivu log_rotate on; do konfiguračního souboru Nginx.

5. Jak nastavit pravidla rotace logů?

  • Použijte direktivy log_rotate daily; a log_rotate 7; pro nastavení denní rotace a uchování logů za posledních 7 dní.

6. Kde se ukládají rotované logy?

  • V podadresáři logs, který se nachází ve stejném adresáři jako původní logovací soubory.

7. Jak otestovat logování v Nginx?

  • Navštivte web nebo pošlete požadavky na server Nginx.
  • Zkontrolujte logovací soubory, zda obsahují zaznamenané požadavky a chyby.

8. Jak otestovat rotaci logů?

  • Počkejte, až uplyne nastavený čas pro rotaci, nebo ručně spusťte rotaci pomocí nástroje logrotate.
  • Zkontrolujte, zda se v adresáři logs vytvořily rotované soubory.