![将 apache 配置转换为 nginx 等效的日志配置](https://linux22.com/image/729121/%E5%B0%86%20apache%20%E9%85%8D%E7%BD%AE%E8%BD%AC%E6%8D%A2%E4%B8%BA%20nginx%20%E7%AD%89%E6%95%88%E7%9A%84%E6%97%A5%E5%BF%97%E9%85%8D%E7%BD%AE.png)
我在 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;