Назад | Перейти на главную страницу

Преобразование конфигурации apache в эквивалент nginx для журналов

У меня есть этот пользовательский журнал в apache

 SetEnvIFNoCase User-agent "ELB-HealthChecker/2.0" skiplog
 LogFormat "%t \"%r\" %>s %O | client:%a | Local:%A | Host:%v | %H | %m | %P(pid) | TimeTaken:%T | %q |DataReceived:%I-Sent:%O-Total:%S | %l | %u | \"%{Referer}i\" \"%{User-Agent}i\"" mylog
 LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_mylog
 CustomLog /var/log/apache2/access.log mylog env=!skiplog
 CustomLog /var/log/apache2/access_org.log combined_mylog env=!skiplog

В основном я хочу пропустить журнал, если пользовательский агент "ELB-HealthChecker/2.0"

Теперь я перешел на nginx и не знаю, как его там использовать

Nginx access_log директива принимает параметр if что заставляет его регистрироваться, только если данное условие не является ложным или пустой строкой.

Итак, вы можете установить переменную, и в случае появления этого пользовательского агента установить для переменной значение 0. Проще всего это сделать в map:

map $http_user_agent $loggable {
    default                 1;
    ELB-HealthChecker/2.0   0;
}

Затем вы можете изменить access_log чтобы проверить переменную:

    access_log /var/log/nginx/whatever-access.log log_format_name if=$loggable;