nginx防盗链referers与第三方模块nginx-accesskey
首先本次测试环境
nginx:1.16.1
系统:centos7.6
由于referers是自带的,所以不需要编译安装,但是accesskey就需要自己安装了
一、先介绍一下referers
是由于nginx自带的模块,所以不需要安装扩展,什么的或者重新编译
代码:
#referers 防盗链
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|zip|rar|7z)$
{
valid_referers no blocked 321dz.com *.321dzcom; #允许的域名
if ($invalid_referer)
{
#return 403; 直接返回403
rewrite ^/ https://www.baidu.com/img/bd_logo1.png; #返回一张图片,就是防盗链的图片,类似于QQ空间
}
}
完成以后记得重启nginx
systemctl restart nginx.server
在server段添加如下,就是本站所有以下的资源,在请求头中的referers不是本站域名,或者以上允许的域名会被直接拒绝返回403,或者返回图片,图片类似QQ空间防盗链,当然referers会被伪装所以不是很高级,对于会技术的人,这些东西小事,所需需要使用nginx第三方插件accesskey。
二、nginx-accesskey
这个是第三方插件,所以需要自己下载,然后编译安装,最后在配置,我这边也花了一些时间才折腾好。也就半小时吧!
首先需要下载第三方插件
我这里直接在编译目录下,克隆/root/nginx-1.16.1
1.nginx是我下载的源代码包解压后的目录
git clone https://github.com/darren2025/nginx-accesskey.git
2.克隆以后得到 nginx-accesskey目录,按兵不动,接下来编译
3.配置
./configure --user=www --group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_geoip_module \
--with-http_stub_status_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--add-module=/root/nginx-1.16.1/nginx-accesskey
#我需要这些模块,你们随意
4.编译
make && make install
5.进入配置编辑
vim /usr/local/nginx/conf/nginx.conf
代码:
#加签名的方式防盗链
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|zip|rar|7z)$
{
accesskey on;
accesskey_hashmethod md5; #加密方式
accesskey_arg sign; #就是 css?sign=下面的加密的值,验证成功显示,验证不成功则返回403
accesskey_signature "mypass$remote_addr"; #my自己设定的密码,后面那段是用户的IP地址 最后生成一个md5值,当然在页面也需要根据用户的不同在相应的文件后面添加md5
}
6.重启nginx ,如果没报错,或者启动不了就可以了
systemctl restart nginx.server
7.最后在所有的页面中,加签名
如果没有添加签名,那么所有的资源会被nginx拒绝返回403