nginx下配置web防盗链的两种方式

web防盗链是老生常谈的话题了,防盗链在特定环境下能有效的减轻服务器的压力,nginx给我们提供了很好的防盗链机制,我们只需要配置即可

防盗链两种方式:referers,加密签名

区别:前者根据nginx自行判断的请求来路(referer)的地址为非法的还是合法的,但是此种方法如果有心的人通过模拟referer进行访问的话还是没有办法,只能提高访问的门槛。后者需要配置一些参数加上自己的编上的算法进行访问,更加安全,但是对于程序人员来说就更加繁琐,每次访问的时候需要加上参数。

第一种配置问题:nginx.conf,找到server

在location ~.*\.(gif|jpg|jpeg|png|bmp|swf)${

     valid_referers  none blocked  *.xxxx.com( 允许访问的域名)

    if($invalid_referer){

        return 403    或者 rewrite http://www.baidu.com

       }

}

以上所有来至xxxx.com和域名中包含google和baidu的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合none这个规则.

语法: valid_referers none | blocked | server_names | string ...;

参数说明

none
“Referer” 来源头部为空的情况
blocked
“Referer”来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头.
server_names
“Referer”来源头部包含当前的server_names(当前域名)
arbitrary string
任意字符串,定义服务器名或者可选的URI前缀.主机名可以使用*开头或者结尾,在检测来源头部这个过程中,来源域名中的主机端口将会被忽略掉

签名加密:需要第三方模块:httpAccessKeyModule

检验 nginx -V :查看是否安装

在location ~.*\.(gif|jpg|jpeg|png|bmp|swf)${

     accesskey on/off

     accesskey_hashmethod md5 //加密规则(md5/sha1)

     accesskey_arg  sign//参数名

     accesskey_signature “admin$remote_addr”//加密规则

}

在php端:

$sign=md5( 'admin' .$_server['REMOTE_ADDR']);

<img src='图片路径?sign={$sign}'>

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值