ロケーション ブロックですべてを拒否すると NGINX ログが機能しない

ロケーション ブロックですべてを拒否すると NGINX ログが機能しない

この動作は非常に奇妙だと思ったので、ここで質問します。

このロケーション ブロックを取得します。

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.phplocation ~ \.php$

nginx: 1.7.11.1私の環境では、Windows 環境ですが、Gryphonで動作します。

私の設定は次のとおりです:

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

}

関連情報