위치 블록에서 모두 거부하면 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.1Windows 환경이지만 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;
        }
    ...
    }

}

관련 정보