Module ngx_http_referer_module

Module ngx_http_referer_module The ngx_http_referer_module module is used to block access to a site for requests with invalid values in the “Referer” header field. It should be kept in mind that fabricating a request with an appropriate “Referer” f

nginx.org

 

  • ngx_http_referer_module 모듈은 "Referer" 헤더 필드에 잘못된 값을 가진 요청에 대한 사이트 액세스를 차단하는 데 사용
  • 적절한 "Referer" 필드 값을 사용하여 요청을 조작하는 것은 매우 쉬움
  • ngx_http_referer_module 모듈의 목적은 요청을 완전히 차단하는 것이 아니라 일반 브라우저에서 전송되는 요청의 대량 흐름을 차단하는 것을 염두에 두어 사용
  • 일반 브라우저는 유효한 요청에 대해서도 "Referer" 필드를 보내지 않을 수 있다는 점도 고려

  • 사용 예시
    valid_referers none blocked server_names
                   *.example.com example.* www.example.org/galleries/
                   ~\.google\.;
    
    if ($invalid_referer) {
        return 403;
    }

 

 

referer_hash_bucket_size 지시자

  • 유효한 레퍼러(valid referers) 해시 테이블(hash tables)의 버킷 크기(bucket size)를 설정
  • 해시 테이블(hash tables) 설정에 대한 자세한 내용은 옆 URL 확인  http://nginx.org/en/docs/hash.html

  • 문맥 : server, location
  • 사용 문법
    ## 문법
    referer_hash_bucket_size size;
  • 사용 예시
    ## 기본 설정
    referer_hash_bucket_size 64;

 

 

referer_hash_max_size 지시자

  • 유효한 참조(valid referers) 해시 테이블(hash tables)의 최대 크기를 설정
  • 해시 테이블(hash tables) 설정에 대한 자세한 내용은 옆 URL 확인  http://nginx.org/en/docs/hash.html

  • 문맥 : server, location
  • 사용 문법
    ## 문법
    referer_hash_max_size size;
  • 사용 예시
    ## 기본 설정
    referer_hash_max_size 2048;

 

 

valid_referers 지시자

  • embedded(내장된) $invalid_referer 변수가 빈 문자열(empty string)로 설정되도록 하는 "Referer" 요청 헤더 필드 값(request header field values을 지정
  • "Referer" 요청 헤더 필드 값(request header field value)이 유효하지 않은 것으로 간주되면 $invalid_referer 변수가 "1"로 설정
  • 일치 검색(Search for a match)은 대소문자(case-insensitive)를 구분하지 않음

  • 문맥 : server, location
  • 사용 문법
    ## 문법
    valid_referers none | blocked | server_names | string ...;

 

 

valid_referers 지시자의 매개변수

1. none

  • 요청 헤더(request header) 안에 "Referer" 필드가 없는 경우

 

2. blocked

  • 요청 헤더(request header)에 "Referer" 필드가 있지만, 방화벽(firewall) 또는 프록시 서버(proxy server)에 의해 해당 값이 삭제되는 경우
  • 값은 "http://" 또는 "https://"로 시작하지 않는 문자열

 

3. server_names

  • 요청 헤더 필드(request header field)에 서버 이름(server names) 중 하나가 포함된 경우

 

4. arbitrary string

  • 임의의 문자열(arbitrary string)은 서버 이름(server name)과 선택적 URI 접두사(optional URI prefix)를 정의
  • 서버 이름(server name)은 시작 또는 끝에 "*"가 올 수 있음
  • 검사하는 동안 "Referer" 필드에 있는 서버의 포트는 무시됨

 

5. regular expression

  • 정규식(regular expression)의 경우 첫 번째 기호는 "~"여야 함
  • 정규식(regular expression)은 "http://" 또는 "https://" 뒤에 시작하는 텍스트에 대해 일치하는지 확인

 

 

ngx_http_referer_module 모듈의 내장 변수 → $invalid_referer

  • "Referer" 요청 헤더 필드 값(request header field value)이 유효한 것으로 간주되는 경우 빈 문자열, 그렇지 않으면 "1"

 

 

'Nginx > Nginx 모듈 학습' 카테고리의 다른 글

ngx_http_hls_module 모듈  (0) 2023.09.24
ngx_http_mp4_module 모듈  (0) 2023.09.24
ngx_http_secure_link_module 모듈  (0) 2023.09.23
ngx_http_realip_module 모듈  (0) 2023.09.23
ngx_http_slice_module 모듈  (0) 2023.09.22

+ Recent posts