nginx:如何禁用 ($http_status == 200) 的 access_log

nginx:如何禁用 ($http_status == 200) 的 access_log

有没有办法禁用access_log200 HTTP 响应代码?我尝试使用条件,但似乎access_log指令不允许在if块中使用。我试过这个:

access_log /var/log/nginx/access_log;

if ($http_status == 200){
    access_log off;   # <---------
}

但它无效

# nginx -t    
nginx: [emerg] "access_log" directive is not allowed here ...

有什么办法可以做到这一点?

答案1

请尝试

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

access_log /var/log/nginx/access_log combined if=$loggable;

这导致响应代码为 2xx 的请求不会被记录。

ngx_http_log_module 文档

相关内容