为“规则禁止”禁用 Nginx 日志记录

Mr.*_*oon 7 nginx logging

在我的 Nginx 配置中,我有一些 IP 块,以对抗垃圾邮件发送者和机器人。

这是非常有效的,但结果是,我的错误日志很快就会被这样的错误消息填满:

2015/12/16 00:56:28 [错误] 27748#0:*120462 规则禁止访问,客户端:167.114.xxx.xxx,服务器:bla bla ....

现在我不想完全禁用错误日志记录,因为我想在出现问题时找出问题所在。我只想禁用这些“规则禁止”消息的日志记录。

知道如何做到这一点吗?

小智 3

正如这里提到的,使用条件日志记录(access_log指令):

启用条件日志记录

条件日志记录允许从访问日志中排除琐碎或不重要的日志条目。在 NGINX 中,条件日志记录是通过 access_log 指令的 if 参数启用的。

例如,可以排除 HTTP 状态代码 2XX(成功)和 3XX(重定向)的请求:

map $status $loggable {
    ~^[23]  0;
    default 1; }

access_log /path/to/access.log combined if=$loggable;
Run Code Online (Sandbox Code Playgroud)

编辑: 正如@zsero在评论中描述的那样,条件日志记录仅支持access_log- 而不是error_log指令

  • 所以这对具体问题没有帮助,对吧? (2认同)