У меня есть несколько разделов в моей конфигурации 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; ... }