개요
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; }
설정 완료후 재시작을 하면 되겠다