Wyobraź sobie sytuację: masz statyczny adres IP, a ty dużo i przez długi czas zajmujesz się edycją strony. W tym samym czasie nadal trzeba monitorować dzienniki pod kątem błędów w zapytaniach lub skanowania narażenia na atak. A obecność dużej liczby rekordów w Twoim IP utrudnia przeglądanie dzienników.
Za pomocą warunkowego wpisu, który jest dostępny w Nginx, począwszy od wersji 1.7.0, możemy sprawdzić IP odwiedzającego i nie zapisywać go w plikach dziennika. Rzeczywiście, dlaczego to zrobić, jeśli logowanie IP nie jest konieczne?
Aby dodać taki wyjątek, musisz utworzyć wpis warunkowy oparty na module map_module . Wynik obliczenia rekordu warunkowego nie zostanie zapisany w dzienniku, jeśli jest równy 0. Reguła będzie wyglądać następująco:
map $ remote_addr $ loggable { "127.0.0.1" 0; ":: 1" 0; domyślnie 1; }
Oznacza to, że domyślny wynik to 1, a dla podanego IP - 0, i nie zostaną one zapisane w dzienniku. Obsługiwane są protokoły 4 i 6. Uwaga, tutaj pierwszą zmienną jest adres klienta łączącego. A druga zmienna musi być zapisana w parametrach logu dostępu.
access_log /var/log/nginx/access.log połączone if = $ loggable;
Blok mapy można określić zarówno na poziomie http
konfiguracji nginx, jak i na poziomie server
.
Wykluczenie innych danych z dzienników
Wyłączenie rejestrowania IP jest tylko jednym z wielu przykładów. Możesz użyć różnych zmiennych ze standardu .
Wyłączmy, na przykład, zapisywanie w dzienniku błędów.html strony. Aby to zrobić, utwórz taki blok:
map $ request_uri $ loggable { ~ * error.html 0; domyślnie 1; }
I napisz, jak powyżej, parametr if jako argument parametru access_log. Po ponownym uruchomieniu nginx wszystkie żądania błędu error.html nie zostaną zapisane. W tym warianty typów error.html?q=search
. Aby uzyskać dopasowanie ścisłe, musisz napisać inne wyrażenie regularne.