我的 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; ... }