- Nginx http referer 모듈 참고 : Module ngx_http_referer_module (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 |