Ведение журнала NGINX не работает, если в блоке местоположения указано «deny all»

Ведение журнала NGINX не работает, если в блоке местоположения указано «deny all»

Мне такое поведение показалось довольно странным, поэтому я решил задать вопрос здесь.

Возьмите этот блок локации;

location ~ /(wp-config.php|readme.html|licence.txt|license.txt|readme.txt) {
    access_log /var/log/nginx/blocked.log blocked;
    deny all;
}

Он ничего не регистрирует в файле журнала, однако если я удалюотрицать все; - это так. То же самое касаетсявозврат 403и т. д.

Я хочу регистрировать заблокированные запросы.

nginx version: nginx/1.8.0

ОБНОВЛЯТЬ

Причиной этого, по-видимому, является определение вами собственных страниц ошибок. Например:

http {  ..
    error_page          403          /error/403.html;
    error_page          404          /error/404.html;
.. }

Удаление этих строк позволило вести журнал

решение1

Что нужно проверить:

  1. Вы определили blocked?
  2. Или путь к файлу журнала правильный?
  3. Проверьте locationзаказ, так как wp-config.phpскорее всего он будет совпадать location ~ \.php$или похож

У меня это работает с nginx: 1.7.11.1Gryphon, хотя это среда Windows.

Вот моя установка:

http {
    ...
    log_format robots   '$remote_addr - $remote_user [$time_local] '
                        '$host "$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';
    ...
    server {

    ...
        location ~/(robots.txt|readme.html) {
            access_log  logs/nginx-access-robots.log robots;
            deny all;
        }
    ...
    }

}

Связанный контент