Nginx 에서 외부 Hotlink 차단하기.

profile
달소

 

안녕하세요. 달소입니다.

 

오늘은 nginx에서 외부 Hotlink를 차단하는방법에 대한 포스팅입니다.

 

Hotlink란?

핫링크는 제 블로그,사이트의 이미지 타 커뮤니티에서 그대로 복사 붙여넣기로 퍼가는경우 <img> 태그에 제 사이트의 주소가 걸리게됩니다.

이럴경우 해당페이지가 읽힐때마다 제사이트의 트래픽을 낭비하게 되는셈이지요. 추가로 컨텐츠도 보호할 수있구요.

 

Hotlink가 되어있는지 안되어있는지는 간단하게 curl 명령어로 확인해볼 수 있습니다.

 

curl -I --referer [아무사이트] [이미지주소]

 

아래처럼 200이되면 어디서 긁어가도 모릅니다..ㅎㅎ

 

image.png.jpg

 

설정환경

 

제 웹서버 환경이 Nginx를 사용하고있기때문에 Nginx를 기반으로 설정하겠습니다.

 

먼저 어떤 호스트(사이트)에 설정하실건지 먼저 지정해준뒤 해당 가상호스트 파일에 내용을 추가해주시면됩니다.

 

ex)

개별 호스트 파일 : /etc/nginx/site-available/svrforum.com
 

 

설정하기

저는 간단하게 특정 파일을 긁어갈 경우 403 page를 리턴시키는 방식으로 진행하겠습니다.

구글링하게되면 정보가 많지만 원하는 사진을 띄워줄 수 도 있습니다.

 

허용도메인 목록은 svrforum.com google.com 이런식으로 스페이스바로 구분해주시면되며
access_log로 어느사이트에서 아래 확장자들을 긁어가는기도 확인할 수 있습니다. 여기서 허용하고싶으면 허용 도메인목록에 넣어주시면됩니다.

 

location ~* \.(jpg|jpeg|png|gif|zip)$ { 
    valid_referers none blocked [허용도메인 목록]; 
        if ($invalid_referer) { 
            access_log /var/log/nginx/hotlink-access.log;
            return 403; }             
    }

 

이걸 server { } 사이에 넣어주시면됩니다.

 

저는 허용도메인에 google.com과 같은 검색엔진의 경우 다 허용했기때문에 문제없이 200 allow이지만

svrforum3.com과 같은 이상한 주소로 curl을 하면 아래처럼 403 에러를 뿜습니다.

 

 

image.png.jpg

 

 

이렇게 간단한 설정으로 사이트의 트래픽 낭비를 보호할 수 있습니다.

 

 

댓글
0
댓글 쓰기
권한이 없습니다.