Зачем писать директиву access_log дважды, чтобы фактически отключить журнал? - PullRequest
0 голосов
/ 17 февраля 2020

Следующий nginx .conf может показать проблему

server {
    listen 80;  
    access_log /var/log/nginx/access.log combined;
    access_log on;
    ...
    location / {
      access_log on;  # write it the second time actually turn off the log!
      ...
    }
    ...
 }

Так что напишите access_log on; дважды, чтобы фактически отключить журнал. Это почему ? Я не могу не задаться вопросом, это ошибка?

Спасибо

---- обновление ----

Оказалось, что есть только директива access_log off, нет access_log on (понятия не имею, почему я вообще это получил: $), поэтому, когда я писал access_log on, журнал записывался в файл с именем «on», а не /var/log/nginx/access.log, как я ожидал. Вот и я подумала, почему нет журнала ?! : $

1 Ответ

1 голос
/ 17 февраля 2020

Это ожидаемое поведение. От NGINX blog :

Журналы доступа не наследуются

Настройки журнала доступа не складываются и не наследуются; директива access_log в одном контексте переопределяет (заменяет) журналы доступа, объявленные в родительских контекстах.

Так что, если вы не поместите access_log on; в location / {, вы получите два файла журнала, потому что файлы в server контекст будет применяться. Наоборот, если вы введете access_log on; в location / {, тогда конфигурация журнала доступа внешней области не будет применяться.

...