O registro do NGINX não funciona ao negar tudo no bloco de localização

O registro do NGINX não funciona ao negar tudo no bloco de localização

Achei esse comportamento bem estranho, por isso vou perguntar aqui.

Pegue este bloco de localização;

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

Ele não registra nada no arquivo de log, no entanto, se eu remover onegar tudo; - é verdade. O mesmo vale pararetornar 403etc.

Quero registrar solicitações bloqueadas.

nginx version: nginx/1.8.0

ATUALIZAR

A causa disso parece ser quando você define suas próprias páginas de erro. Por exemplo:

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

A remoção dessas linhas permitiu o registro

Responder1

Coisas para verificar:

  1. Você definiu blocked?
  2. Ou o caminho para o arquivo de log está correto?
  3. Verifique locationo pedido porque wp-config.phpprovavelmente será igual location ~ \.php$ou semelhante

Funciona para mim com nginx: 1.7.11.1o Gryphon, embora seja um ambiente Windows.

Aqui está minha configuração:

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;
        }
    ...
    }

}

informação relacionada