将 apache 配置转换为 nginx 等效的日志配置

将 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,但我不知道如何在其中使用它

答案1

nginxaccess_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;

相关内容