ngx_http_referer_module

ngx_http_referer_module 모듈은 “참조자” 헤더 필드에서 잘못된 값을 가진 요청에 대해 사이트에 대한 액세스를 차단하는 데 사용됩니다. 적절한 “참조자” 필드 값을 가진 요청을 생성하기는 매우 쉽고 따라서 이 모듈의 의도된 목적은 그러한 요청을 철저하게 차단하는 것이 아니라 일반 브라우저가 전송한 요청의 대량 흐름을 차단하는 것이라는 점을 유념해야 합니다. 또한 일반 브라우저는 올바른 요청에 대해서도 “참조자”를 보낼 수 없음을 고려해야 합니다.

예제 구성

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

if ($invalid_referer) {
    return 403;
}

Directives

Syntax:  referer_hash_bucket_size size;
Default: referer_hash_bucket_size 64;
Context: server, location
This directive appeared in version 1.0.5.

올바른 참조자 해시 테이블에 대한 버킷 크기를 설정합니다. 해시 테이블을 설정하는 방법에 대한 자세한 내용은 별도의 문서를 참조하세요.

Syntax:  referer_hash_max_size size;
Default: referer_hash_max_size 2048;
Context: server, location
This directive appeared in version 1.0.5.

올바른 참조자 해시 테이블에 대한 최대 크기를 설정합니다. 해시 테이블을 설정하는 세부 정보는  별도의 문서에서 제공합니다.

Syntax:  valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, location

포함된 $invalid_referer 값이 비어 있는 문자열로 설정되게 하는 “Referer” 요청 헤더 필드 값을 지정합니다. 그렇지 않으면 변수가 “1”로 설정됩니다. 일치에 대한 검색은 대소문자를 구분하지 않습니다.

매개변수는 다음과 같을 수 있습니다.

none

” Referer” 필드가 요청 필드에 없습니다.

blocked

” Referer” 필드가 요청 헤더에 있지만 해당 값은 방화벽 또는 프록시 서버에 의해 삭제되었습니다. 그러한 값은 “http://”

또는 “https://”로 시작하지 않는 문자열입니다.

server_names

“Referer” 요청 필드에는 서버 이름 중 하나가 포함됩니다.

임의 문자열

서버 이름과 URI 접두사 옵션을 정의합니다. 서버 이름에는 시작 또는 끝에 “*”가 있을 수 있습니다. 확인하는 동안 “참조자” 필드의 서버 포트는 무시됩니다.

정규식

첫 번째 기호는 “~”입니다. 식이 “http://” 또는 “https://” 다음 시작되는 텍스트에 대해 일치하는지 주목해야 합니다.

예:

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

임베디드 변수

$invalid_referer

“참조자” 요청 헤더 필드 값이 유효하다고 간주되면 비어 있는 문자열이고 그렇지 않으면 “1”입니다.