Jak skonfigurować rejestrowanie i rotację logów w Nginx na serwerze VPS Ubuntu

Jak skonfigurować rejestrowanie i rotację logów w Nginx na serwerze VPS Ubuntu

Wprowadzenie

Rejestrowanie logów jest niezbędną częścią utrzymania dowolnego systemu, w tym serwera internetowego. Logi rejestrują zdarzenia, które mają miejsce w systemie, zapewniając cenny wgląd w jego pracę i pomagając w rozwiązywaniu problemów.

Nginx to popularny serwer internetowy open source, znany z wydajności i wszechstronności. Rozumienie, jak skonfigurować rejestrowanie i rotację logów w Nginx, jest kluczowe dla utrzymania wydajności i bezpieczeństwa serwera.

Ten przewodnik przeprowadzi Cię przez krok po kroku proces konfigurowania rejestrowania i rotacji logów w Nginx na serwerze VPS Ubuntu.

Konfiguracja rejestrowania

1. Otwórz plik konfiguracyjny Nginx


sudo nano /etc/nginx/nginx.conf

2. Dodaj sekcję http

Jeśli jej jeszcze nie ma, dodaj sekcję http do pliku konfiguracyjnego:


http {

...

Twoja konfiguracja rejestrowania i rotacji logów

...

}

3. Skonfiguruj dyrektywę access_log

Dyrektywa access_log określa, gdzie i jak logować żądania do serwera. Dodaj następującą linię do sekcji http:


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

* /var/log/nginx/access.log: ścieżka do pliku logu dostępu
* main: domyślny format logu

4. Skonfiguruj dyrektywę error_log

Dyrektywa error_log określa, gdzie i jak logować błędy serwera. Dodaj następującą linię do sekcji http:


error_log /var/log/nginx/error.log;

* /var/log/nginx/error.log: ścieżka do pliku logu błędów
* error: domyślny format logu

5. Zapisz i uruchom ponownie Nginx

Zapisz plik konfiguracyjny i uruchom ponownie Nginx, aby zastosować zmiany:


sudo systemctl restart nginx

Rotacja logów

1. Utwórz skrypt crontab

Utwórz skrypt crontab, aby automatycznie obracać logi codziennie o północy:


sudo nano /etc/cron.d/nginx-logrotate

2. Dodaj następujący kod do skryptu:


0 0 * root /usr/sbin/logrotate /etc/logrotate.d/nginx

3. Zapisz i zamknij plik

4. Utwórz plik logrotate.d/nginx

Utwórz plik konfiguracyjny logrotate dla Nginx:


sudo nano /etc/logrotate.d/nginx

5. Dodaj następujący kod do pliku:


/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}

* daily: obracaj logi codziennie
* rotate 7: przechowuj 7 zrotowanych kopii
* compress: kompresuj zrotowane logi
* delaycompress: opóźnij kompresję o 24 godziny, aby umożliwić analizę w czasie rzeczywistym
* missingok: nie zgłaszaj błędu, jeśli plik logu nie istnieje
* notifempty: nie obracaj pustych plików logu

Konfiguracja zaawansowana

Formatowanie logów

Możesz dostosować format logów za pomocą dyrektyw log_format. Na przykład, aby dodać czas żądania do logów dostępu, dodaj następującą linię do sekcji http:


log_format my_format '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes "$http_referer" "$http_user_agent" $request_time';

Następnie użyj następującej dyrektywy access_log w celu logowania za pomocą dostosowanego formatu:


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

Obsługa wielu witryn

Jeśli obsługujesz wiele witryn na jednym serwerze Nginx, możesz użyć oddzielnych plików logowania dla każdej witryny. Aby to zrobić, utwórz nową sekcję server dla każdej witryny i skonfiguruj dyrektywy access_log i error_log dla tej sekcji.

Logowanie do syslog

Możesz także skonfigurować Nginx, aby logował do syslog, centralnego systemu rejestrowania. Aby to zrobić, dodaj następujące linie do sekcji http:


error_log syslog:server=localhost:514,facility=local1;
access_log syslog:server=localhost:514,facility=local2;

Wniosek

Skonfigurowanie rejestrowania i rotacji logów w Nginx na serwerze VPS Ubuntu jest kluczowe dla utrzymania wydajności i bezpieczeństwa serwera. Ten przewodnik krok po kroku przeprowadził Cię przez proces konfiguracji podstawowych i zaawansowanych opcji rejestrowania, dzięki czemu możesz dostosować system rejestrowania do swoich potrzeb.

Regularne przeglądanie logów pozwala wcześnie wykrywać problemy, rozwiązywać błędy i zapewnić optymalną wydajność serwera.

Często zadawane pytania

1. Co to jest rotacja logów?

Rotacja logów to proces tworzenia kopii zapasowych istniejących plików logów i usuwania starych kopii. Zapobiega to niekontrolowanemu wzrostowi plików logów i ułatwia zarządzanie nimi.

2. Dlaczego należy obracać logi?

Rotacja logów uwalnia miejsce na dysku, poprawia wydajność systemu i ułatwia wyszukiwanie i analizowanie zdarzeń.

3. Jak często powinienem obracać logi?

Częstotliwość rotacji logów zależy od ilości generowanych logów. Ogólnie rzecz biorąc, zaleca się obracanie logów codziennie lub co tydzień.

4. Gdzie przechowuje się pliki logów Nginx?

Domyślnie pliki logów Nginx znajdują się w katalogu /var/log/nginx/.

5. Jak wyczyścić logi Nginx?

Aby wyczyścić pliki logów Nginx, uruchom następujące polecenie:


sudo rm -rf /var/log/nginx/*

6. Jak włączyć debugowanie w Nginx?

Aby włączyć debugowanie w Nginx, dodaj następującą linię do sekcji http:


error_log /var/log/nginx/error.log debug;

7. Jak utworzyć plik jawnie kolejkujący?

Aby utworzyć plik jawnie kolejkujący, dodaj następującą linię do sekcji http:


open_file_cache max=10000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors off;

8. Jak skonfigurować logging geoIP w Nginx?

Aby skonfigurować logging geoIP w Nginx, dodaj następujące linie do sekcji http:


geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $country_code {
default US;
}
log_format geoip '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes "$http_referer" "$http_user_agent" $country_code';