>백엔드 개발 >PHP 튜토리얼 >Nginx에서 핫링크를 방지하는 3가지 방법

Nginx에서 핫링크를 방지하는 3가지 방법

WBOY
WBOY원래의
2016-08-08 09:20:291021검색

1: 일반적인 핫링크 방지 보호는 다음과 같습니다.

<code>location ~* \.(gif|jpg|png|swf|flv)$ { 
  valid_referers none blocked www<span>.jzxue</span><span>.com</span> jzxue<span>.com</span><span>; </span>
  if ($invalid_referer) { 
    rewrite ^/ http://www<span>.jzxue</span><span>.com</span>/retrun<span>.html</span><span>; </span><span>#return 403; </span>
  } 
} </code>

첫 번째 줄: gif|jpg|png|swf|flv
gif, jpg, png, swf 및 flv 접미사가 포함된 파일이 핫링크로부터 보호됨을 나타냅니다.
두 번째 줄 : www.ingnix.com
의 두 가지 출처에 대한 판단을 나타냅니다. if{}의 내용의 의미는 소스가 지정된 소스가 아닌 경우 http://www.jzxue.com/retrun.html 페이지로 이동한다는 것입니다. 물론 직접 반환하는 것도 가능합니다. 403. of.

2: 이미지 디렉토리에 대한 핫링크 방지

<code>location /images<span>/</span> { 
  alias /<span>data</span>/images<span>/</span>; 
  valid_referers <span>none</span> blocked server_names <span>*</span><span>.</span>xok<span>.</span>la xok<span>.</span>la ; 
  <span>if</span> (<span>$invalid_referer</span>) {<span>return</span><span>403</span>;} 
} </code>

3: 타사 모듈 ngx_http_accesskey_module을 사용하여 Nginx 핫링크 방지 구현
구현 방법은 다음과 같습니다.
1. NginxHttpAccessKeyModule 모듈 파일을 다운로드합니다: http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz; 2. 이 파일의 압축을 푼 후 nginx-accesskey-2.0.3에서 구성 파일을 찾습니다. 이 파일을 편집하세요. "$HTTP_ACCESSKEY_MODULE"을 "ngx_http_accesskey_module"로 바꾸세요.
3. 다음 매개변수를 사용하여 nginx를 다시 컴파일합니다.

<code>./configure --<span>add</span>-<span>module</span>=path/<span>to</span>/nginx-accesskey
<<pestd <span>add</span></code>
위의 원래 컴파일 매개변수를 추가한 후 다음을 실행해야 합니다. make && make install

    다음의 conf 파일을 수정합니다. nginx를 실행하고 다음 줄을 추가하세요.
<code><span>location</span> /download {
  <span>accesskey</span><span>on</span>;
  <span>accesskey_hashmethod</span> md5;
  <span>accesskey_arg</span><span>"key"</span>;
  <span>accesskey_signature</span><span>"mypass<span>$remote_addr</span>"</span>;
}</code>
여기서:

accesskey는 모듈 스위치입니다.
accesskey_hashmethod는 암호화 방법 MD5 또는 SHA-1입니다.
accesskey_arg는 URL의 키워드 매개변수입니다.
accesskey_signature는 암호화된 값으로, 여기서는 mypass와 접속 IP로 구성된 문자열입니다.
테스트 스크립트 download.php에 액세스합니다.

<code><span><span><?</span><span>$ipkey</span>= md5(<span>"mypass"</span>.<span>$_SERVER</span>[<span>'REMOTE_ADDR'</span>]);
<span>$output_add_key</span>=<span>"<a href=http://www.jzxue.com/download/G3200507120520LM.rar?key="</span>.<span>$ipkey</span>.<span>">download_add_key</a><br />";
<span>$output_org_url</span>=<span>"<a href=http://www.jzxue.com/download/G3200507120520LM.rar>download_org_path</a><br />"</span>;
<span>echo</span><span>$output_add_key</span>;
<span>echo</span><span>$output_org_url</span>;
<span>?></span></code>
첫 번째 download_add_key 링크에 액세스하면 정상적으로 다운로드할 수 있지만 두 번째 링크 download_org_path에서는 403 Forbidden 오류가 반환됩니다.

참고:
NginxHttpAccessKeyModule
http://xok.la/2009/03/nginx_http_accesskey_module_referer.html

위 내용은 관련 내용을 포함하여 Nginx 안티 핫링크의 세 가지 방법을 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.