ホームページ >バックエンド開発 >PHPチュートリアル >Nginx でホットリンクを防ぐ 3 つの方法

Nginx でホットリンクを防ぐ 3 つの方法

WBOY
WBOYオリジナル
2016-08-08 09:20:291017ブラウズ

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 のサフィックスを持つファイルがホットリンクから保護されていることを示します
2 行目: www.ingnix.com の 2 つの起源の判断を示します
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

nginx の conf ファイルを変更し、次の行を追加します:
  1. <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>
  2. Among彼ら:
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 リンクにアクセスすると正常にダウンロードできますが、2 番目のリンク download_org_path は 403 Forbidden エラーを返します。
参考:
NginxHttpAccessKeyModule http://xok.la/2009/03/nginx_http_accesskey_module_referer.html



上記では、Nginx のホットリンク対策の 3 つの方法を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。