Site icon 지락문화예술공작단

[NGINX] block download from bad-referer (Deny all but specific domains)

개요

nginx 운영중 이미지 외부링크와 관련되어 문제 발생시
이를 해결하는 방법이 좀 나오는데,

그 중, 간단하면서도 나름 상위에 나오는 설정인


valid_referers none blocked jirak.net *.jirak.net ;
if ($http_referer = "") { return 403; access_log off; }

이 설정을 해놓고 나서,

결과가 나오기 때문에 “음… 잘 되었구나… “를 판단할 수 있으나
정작 운영시에는 외부에서 퍼가고 있음을 알 수 있다.

물론, 내가 운영하는 jirak.net 에는 이런 문제가 없다. 외부에서 퍼갈일이 없거든…
각설하고…ㄷ ㄷ ㄷ

 

상황가정

사용중인 자신의 도메인 (또는 거부하지 않고 허용해줘야 하는 도메인)

 

 

거부해야 하는 도메인 (자꾸만 이미지를 퍼가는 도메인)

 

 

설정

nginx.conf

server{} 섹션 내부에 사용 하시라는 의미를 전달합니다…


server {
listen 443 ssl http2;
.
.
include block_referer_check.conf;
include block_referer_deny.conf;
}


 

block_referer_check.conf

referer 를 확인해서 “$bad_referer” 로 지정

1. 원하는 도메인만 차단 하는 경우


map $http_referer $bad_referer {
hostnames;
default 0;

"~jirak.net" 0;
"~google.com" 0;

"~hahaha.com" 1;
"~hohoho.com" 1;
}


 

2. 특정 도메인을 제외하고는 모두 차단 하는 경우


map $http_referer $bad_referer {
hostnames;
default 0;

"~jirak.net" 0;
"~google.com" 0;


# if deny all
"~*" 1;
}


 

block_referer_deny.conf

“$bad_referer”에 대한 액션


if ($bad_referer) {
return 444;
}


 

설정 완료후 재시작을 하면 되겠다

Exit mobile version