如何禁用本地主机或特定 IP 的 Nginx 日志记录?

如何禁用本地主机或特定 IP 的 Nginx 日志记录?

我的 Nginx 配置中有几个部分,php 的 fcgi、某些 URL 的上游等等,我希望该nginx.log文件不会记录来自本地主机的任何查询,因为内部进程只会淹没它,然后由 cron 脚本进行处理。

有任何想法吗?

我已尝试过,它会忽略它。

location / {
   rewrites......
   if ($host = 127.0.0.1){
     access_log off;
   }
}

答案1

你的配置是正确的,但是 NginX 有点……疯狂?看看它的如果是邪恶的维基页面。

除此之外,不要尝试在该条件下禁用日志,而是尝试将其重定向到另一个日志,看看/var/log/nginx/access_localhost.log它是否有帮助(如果有效则链接到它/dev/null,或者只是每天截断)。

还要记住,access_log指令(以及 NginX 中的其他指令)不会被继承。这是来自 NginX 邮件列表(链接自 NginX 的 wiki)关于此主题的引文:

nginx 中没有“全局”日志,只有“本地”日志,要么明确定义,要么从上一级别继承。

access_log 指令与 nginx 配置中的所有数组类型指令一样,如果在某个级别定义,它将忽略继承的值。即在配置中

http { 访问日志 log1;

server {
    server_name  server1;
}

server {
    server_name  server2;
    access_log   log2;
    ...
} }

只有 server1 会将日志设置为 log1,而 server2 会将日志设置为 log2。如果您希望 server2 将日志同时写入 log1 和 log2,则应明确说明,即

server {
    server_name  server2;
    access_log   log1;
    access_log   log2;
    ...
}

相关内容