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

Как отключить ведение журнала Nginx для localhost или определенного IP-адреса?

У меня есть несколько разделов в моей конфигурации Nginx, fcgi для php, восходящий поток для определенных URL-адресов и т. Д., И я хочу, чтобы nginx.log file, чтобы ничего не регистрировать для любого запроса, исходящего от localhost, поскольку внутренние процессы просто заполняют его, а затем обрабатываются сценариями cron.

Любые идеи?

Я пробовал это игнорировать.

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

Ваша конфигурация верна, но NginX имеет тенденцию быть немного ... сумасшедшим? с Ifs. Взгляни на это Если это зло вики-страница.

Кроме того, вместо того, чтобы пытаться отключить журнал при этом условии, попробуйте перенаправить его в другой журнал, например /var/log/nginx/access_localhost.log и посмотрите, поможет ли это (свяжите его с /dev/null если работает, или просто обрезать каждый день).

Также помните, что access_log директивы (и другие директивы в NginX) не будут унаследованы. Это цитата из списка рассылки NginX (ссылка на вики NginX) по теме:

В nginx нет «глобальных» журналов, только «локальные», явно определенные или унаследованные с предыдущего уровня.

Директива access_log, как и все директивы типа массива в конфигурации nginx, будет игнорировать унаследованные значения, если они определены на определенном уровне. Т.е. в конфигурации

http {access_log 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;
    ...
}