Warunkowe logowanie w Nginx

Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał

Logowanie całego ruchu HTTP jest często zbędne. Dotyczy to zwłaszcza stron, które zawierają nie tylko treść tekstową, ale też wszelkiego rodzaju dodatkowe komponenty, takie jak skrypty JavaScript, arkusze stylów, obrazy, fonty itd. Możesz wskazać, co chcesz logować, na zasadzie włączania, ale znacznie łatwiej zrobić to przez warunkową selekcję negatywną. Najpierw zdefiniuj format logu, następnie utwórz warunkowe mapowanie, a na koniec określ logger ze zmienną decyzyjną. Na przykład:

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

map $request_uri $loggable {
    default                                             1;
    ~*\.(ico|css|js|gif|jpg|jpeg|png|svg|woff|ttf|eot)$ 0;
}

access_log /var/log/nginx/access.log mylogformat if=$loggable;

W ten sposób nie będziemy logować żadnych dodatkowych zasobów, a w logu zostaną tylko zwykłe strony. Będzie to bardziej przydatne do dalszej analizy ruchu niż ręczne odfiltrowywanie tych rzeczy.

Wersja Markdown

Wszystkie treści na tej stronie są udostępniane na licencji Uznanie autorstwa – Użycie niekomercyjne – Bez utworów zależnych 4.0 Międzynarodowe (CC BY-NC-ND 4.0). Cytuj jako: Michał Sobczak, „Warunkowe logowanie w Nginx”, 28 kwietnia 2023, https://michalasobczak.pl/pl/posts/conditional-nginx-logging.html