логи nginx для определения местоположения - PullRequest
0 голосов
/ 12 октября 2018

Нужна помощь в настройке журналов nginx, чтобы они не дублировались.

Моя конфигурация следующая.Я хотел бы добиться, чтобы все журналы, скажем, http://example.com/app отправлялись в файл app.access.log, а журналы для остальной части сайта - в файл main.access.log

ОднакоВ следующих журналах конфигурации приложение регистрирует журналы app.access.log и main.access.log.

server {

       access_log /var/log/nginx/main.access.log;


       location /app {
           access_log /var/log/nginx/app.access.log;
       }
}

Есть идеи, как это исправить?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Директива access_log включает if = условие , которое можно использовать для управления журналированием.

Например:

map $request_uri $loggable {
    ~^/app  0;
    default 1;
}
server {
    access_log /var/log/nginx/main.access.log if=$loggable;
    ...
}

См. thisдокумент для подробностей.

Альтернатива состоит в том, чтобы зарегистрировать все вместе и разбить его на два отдельных файла позже, используя grep.


Вдохновленные решением @ Andrea, вы могли бытакже используйте этот шаблон:

server {
    location / {
        access_log /var/log/nginx/main.access.log;

        location /foo { ... }
        location /bar { ... }
        ...
    }
    location /app {
        access_log /var/log/nginx/app.access.log;
    }
}

Таким образом, верхний уровень имеет только два блока location верхнего уровня, а все остальные блоки location вложены в `расположение по умолчанию.

0 голосов
/ 12 октября 2018

Вы можете использовать регулярное выражение отрицания, чтобы перехватить весь запрос, НЕ направленный приложению, и определить там директиву access_log.Затем определите другое местоположение для приложения

location ~ ^((?!app).)*$ {
        access_log /var/log/nginx/not-an-app.access.log;
   }

location /app { 
       access_log /var/log/nginx/app.access.log;
   }

Я думаю, что это немного натянуто, и я бы проверил это до того, как запустить его в производство.

...