nginx防盗链配置及防盗链详细教程

nginx防盗链配置及防盗链详细教程,第1张

nginx防盗链配置及防盗链详细教程(含注释)

常见的方法是添加:

1 valid_referersnone阻止了www.example.comexample.com; 其中none表示空的出处,即直接访问,比如直接在浏览器中打开一张图片;
  • 封锁是指被防火墙标记的路由;
  • Server_names也是域名。0.5.33版本以后,*.example.com可以用来表示所有二级域名。
  • 一、对全站不同文件类型进行防盗链

    1 2 3 4 5 6 7 位置~。*.(WMA|wmv|ASF|MP3|MMF|zip|rar|jpg|gif|png|swf|flv)${ valid_referersnoneblocked*.765h.com765h.com; if($invalid_referer){ #重写http://www.765h.com/error.html;^/ return403; } } 第一行:WMA|WMV|ASF|MP3|MMF|ZIP|RAR|JPG|GIF|PNG|SWF|FLV表示带有这些后缀的文件要进行防盗保护;第二行:*.765h.com765h.com说判断这两条路由(*代表任意,任意二级域名),可以多加;第3行:if{}中的内容表示如果路由不是指定路由,跳转到403错误页面。当然也有可能直接回到404或者一张图。(注意:如果需要跳转到指定的错误页面,取消第四行的注释,改为第五行,第四行的链接改为图片或其他)

    二。防止特定网站窃取资源链除了使用http_referer_module,即官方文档链接之外,基本与第一项相同。

    1 2 3 4 5 6 位置~*。(WMA|wmv|ASF|MP3|MMF|zip|rar|jpg|gif|png|swf|flv)${ if($http_referer~*"^http://(.+.)?myspace.com/"·^http://(.+.)?blogspot.com/"·^http://(.+.)?livejournal.com/"{ #重写^/http://***。***.***; return403; } } 三。对于不同的站点目录

    1 2 3 4 5 6 7 8 location/img/{ 位置/img/{   root/data/img/; root/data/img/; valid_referersnoneblocked*.765h.com765h.com; if($invalid_referer){ #重写http://www.765h.com/images/error.gif;^/ return403; } } 以上三项是nginx的防盗链功能。只需将修改后的代码添加到/usr/local/nginx/conf/nginx.conf即可(注意:这里指的是默认)。如果站点是独立的,它们将被添加到各自的配置文件中。例如,lnmp添加站点的配置文件在/usr/local/中。

    另外,需要注意的是,新手经常报错无效或错误的防盗链,是因为放错位置或与同一个位置冲突造成的。这段代码的正确位置是添加到服务器段的中间,服务器段有好几个位置,所以引用插入就行了。不加修改,其本身的防盗链码会和下面的一段发生冲突,可以去掉或者合并,即“{”后第一行可以加“过期30d”。注意不要忘记分号,保存文件重启nginx或重启lnmp后才会生效。

    1 2 3 4 位置~。*.(gif|jpg|JPEG|png|BMP|swf)$ { 过期30d } 四。ngx_http_accesskey_module,nginx的第三方模块,实现了下载文件的防盗链下面是shell执行命令

    1 2 3 #tarzxvfnginx-0.7.61.tar.gz #cdnginx-0.7.61/ #tarxvfznginx-accesskey-2.0.3.tar.gz 如果没有这个模块,执行WGET-Chttp://wiki.nginx.org/images/5/51/nginx-accesskey-2.0.3.tar.gz并下载回来。

    1 2 3 4 #CDnginx-accesskey-2.0.3 #vi配置 #将http_modules="$http_modules$http_accesskey_module"修改为http_modules="$http_modulesNGX_http_accesskey_module"(这是本模块的bug) #。/configure–user=www–group=www–prefix=/usr/local/nginx–with-http_stub_status_module–with-http_SSL_module–add-module=/root/nginx-accesskey-2.0.3 编译成功后,在主配置文件中添加类似如下的代码:

    1 2 3 4 5 6 位置/下载{ accesskeyon; accesskey_hashmethodMD5; accesskey_arg"key"; accesskey_signature"mypass$remote_addr"; } 其中:location/download是下载的目录。钥匙是模块开关;access_hash方法是MD5或sha-1;Accesskey_arg是url中的关键字参数;accesskey_signature是一个加密值,这里是一个由mypass和accessIP组成的字符串。

    访问测试脚本下载:

    1 2 3 4 5 6 7 <;? $ipkey=md5("mypass"。$_SERVER['远程_ADDR']); $output_add_key="<;ahref=http://www.example.cn/download/g3200507120520lm.rar?key="。$ipkey。">下载_添加_密钥</a>;<br/>; $output_org_URL="<;ahref=http://www.example.cn/download/g3200507120520lm.rar>;下载_组织_路径</a>;<br/>; echo$output_add_key; echo$output_org_URL; ?> 访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403禁止错误。如果不怕麻烦,又能有条件实现,推荐使用NginxHttpAccessKeyModule。他的 *** 作方式是:比如我的下载目录里有一个file.zip。http://www.765h.com/download/file.zip使用ngx_http_accesskey_module模块后,对应的是http://www.765h.com/download/file.zip?的URI。Key=09093abeac094。只有给定的键值正确,才能在下载目录下下载file.zip。而且键值与用户IP相关,可以避免链盗。据说NginxHttpAccessKeyModule现在可以防雷电了。你可以试试。

    本文大部分内容来自作者蛋粉的防盗链教程。

    CC-NC-SA3.0获得许可。转载请注明出处。这篇文章的永久链接地址是http://www.85sb.com/155.html.

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/zz/744903.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-04-29
    下一篇 2022-04-29

    发表评论

    登录后才能评论

    评论列表(0条)

    保存