Назад | Перейти на главную страницу

nginx: как отключить access_log для ($ http_status == 200)

Есть ли способ отключить access_log для кода ответа HTTP 200? Я пробовал использовать условия, но кажется 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 ...

Есть какой-либо способ сделать это?

Пожалуйста попробуйте

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

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

что приводит к тому, что запросы с кодами ответа 2xx не регистрируются.

ngx_http_log_module документация