Thank you for reading this post, don't forget to subscribe!
нет необходимости хранить все подряд в логах, например запросы к статичным файлам или запросы от некоторых user agent'ов или щапросы с некоторых IP адресов… Ниже приведу пример, как настроить некоторые исключения для тех или иных типов запросов.
Исключение User Agent'ов
Например мне нет необходимости хранить логи, генерируемые от приходов ботов pingdom, google и тп, в данном случае можн использовать модуль map
:
1 2 3 4 5 6 |
map $http_user_agent $log_agents { ~Pingdom 0; ~Googlebot 0; default 1; } |
В секции server
указываем:
1 |
access_log /var/log/nginx/access.log main if=$log_agents; |
Исключение обращений к статичным файлам
Например к изображениям или шрифтам:
1 2 3 4 5 6 |
location ~* \.(png|jpg|jpeg|gif|ico|woff|woff2|svg|txt|pdf)$ { access_log off; log_not_found off; expires max; } |
Исключение IP
1 2 3 4 5 6 7 |
map $remote_addr $log_ip { "127.0.0.1" 0; "xxx.xx.x.x" 0; "xxx.xx.x.x" 0; default 1; } |
В секции server
:
1 |
access_log /var/log/nginx/access.log main if=$log_ip; |
Объединение нескольких условий
1 2 3 4 5 6 7 8 9 10 11 12 13 |
map $http_user_agent $log_agents { ~Pingdom 0; ~Googlebot 0; default 1; } map $remote_addr $log_ip { "127.0.0.1" 0; "xxx.xx.x.x" 0; "xxx.xx.x.x" 0; default 1; } |
В секции server
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
server { ... set $logging 1; set $logtest ''; if ( $log_agents = 0 ) { set $logtest "${logtest}A"; } if ( $log_ip = 0 ) { set $logtest "${logtest}B"; } if ( $logtest = "AB" ) { set $logging 0; } access_log /var/log/nginx/access.log main if=$logging; } |