[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; }

이 설정을 해놓고 나서,

  • 본인의 사이트에는 이미지 출력이 잘 되고 있으며 (문제가 없으며)
  • 도메인이 다른 다른 사이트에 <img src> 태그를 이용해서 불러들일 시 “fobidden” 출력

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

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

 

상황가정

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

  • jirak.net
  • google.com

 

 

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

  • hahaha.com
  • hohoho.com

 

 

설정

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;
}


 

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

About KENNETH 19694 Articles
지락문화예술공작단

Be the first to comment

Leave a Reply

Your email address will not be published.


*


이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.