首页 > 其他 > 详细

nginx 防盗链配置

时间:2019-10-26 18:05:21      阅读:95      评论:0      收藏:0      [点我收藏+]

背景:防止第三方引用链接访问我们的图片,消耗服务器资源和网络流量,我们可以在服务器上做防盗链限制。

实现防盗链的方式有两种:refer方式和签名方式。 

refer方式实现防盗链

工作模块:ngx_http_referer_module。

作用变量:$invalid_referer,全局变量。

配置:


server {
   listen 80;
   server_name www.imcati.com refer-test.imcati.com;
   root /usr/share/nginx/html;
   location ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        valid_referers none blocked www.imcati.com;
        if ($invalid_referer) {
            return 403;
           }
      }
   }

valid_referers: 指定资源访问是通过以下几种方式为合法,即白名单。
none:允许缺失的头部访问。
blocked:允许referer没有对应值的请求。
server_names:若referer站点域名与server_name中本机配的域名一样允许访问。

访问refer-test.imcati.com/index.html测试:

技术分享图片

index.html

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<p>image address:<a href="http://www.imcati.com/test.jpg">image</a></p>
</body>
</html>

点击图片地址:

技术分享图片

 

可以把none去掉,防止别人通过右键另存图片地址,当然别人也可以通过伪造refer来进行访问。

那么如何从根本上解决防盗链问题呢?

我们可以通过签名方式实现。

签名方式实现防盗链

工作模块:第三方模块HttpAccessKeyModule。

配置:

server {
    listen       80;
    server_name  www.imcati.com refer-test.imcati.com;
    root /usr/share/nginx/html;

    location ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        accesskey on;
        accesskey_hashmethod md5;
        accesskey_arg "key";
        accesskey_signature "mypass$remote_addr";
    }
}
}

accesskey on | off: 模块开关
accesskey_hashmethod md5|sha—1: 签名加密方式
accesskey_arg: GET参数名称
accesskey_sign: 加密规则

$sign = md5(‘mypass‘ . $_SERVICE[‘REMOTE_ADDR‘]);
//img src=/test.png?key=<?=$sign?>

 

nginx 防盗链配置

原文:https://www.cnblogs.com/imcati/p/11743922.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!