Maison  >  Article  >  développement back-end  >  Nginx防盗链的3种方法

Nginx防盗链的3种方法

WBOY
WBOYoriginal
2016-08-08 09:20:29976parcourir

一:一般的防盗链如下:

<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这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来思是,如果来路不是指定来路就跳转到http://www.jzxue.com/retrun.html页面,当然直接返回403也是可以的。

二:针对图片目录防止盗链

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

三:使用第三方模块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下的config文件。编辑此文件:替换其中的”$HTTP_ACCESSKEY_MODULE”为”ngx_http_accesskey_module”;
3. 用一下参数重新编译nginx:

<code>./configure --<span>add</span>-<span>module</span>=path/<span>to</span>/nginx-accesskey
add</code>

上面需要加上原有到编译参数,然后执行: make && make install

  1. 修改nginx的conf文件,添加以下几行:
<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=%22</span">.<span>$ipkey</span>.<span>">download_add_key</span></a><br>"</span>;
<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></span></code>

访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。
参考:
NginxHttpAccessKeyModule
http://xok.la/2009/03/nginx_http_accesskey_module_referer.html

以上就介绍了Nginx防盗链的3种方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn