nginx防盗链referers与第三方模块nginx-accesskey

作者: Darren 分类: nginx 发布时间: 2019-10-01 22:10

首先本次测试环境

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

           }

       }

%title插图%num

完成以后记得重启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目录,按兵不动,接下来编译

%title插图%num

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

       }

 

%title插图%num

6.重启nginx ,如果没报错,或者启动不了就可以了

systemctl restart nginx.server

7.最后在所有的页面中,加签名

%title插图%num

如果没有添加签名,那么所有的资源会被nginx拒绝返回403

 

发表评论

您的电子邮箱地址不会被公开。

16 + 13 =