Nginx之防盗链

92 阅读1分钟

二.防盗链

1.简介:

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名。

2. 正常的referer信息有以下几种:

  • none:#请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。

  • blocked:#请求报文有referer首部,但无有效值,比如为空。

  • server_names:#referer首部中包含本主机名及即nginx 监听的server_name。

  • arbitrary_string:#自定义指定字符串,但可使用*作通配符。示例: .kgc.org www.kgc.

  • regular expression:#被指定的正则表达式模式匹配到的字符串,要使用开头,例如:.*.kgc.com

示例:

实现盗链

在一机器上

vim /apps/nginx/conf.d/pc.conf
#添加内容
location ~* \.(jpg|gif|swf)$ {            
         root  /data/nginx/html/pc;
         valid_referers none blocked *.pc.com pc.com;   
         if ( $invalid_referer ) {
           rewrite ^/ http://www.pc.com/error.png;
           #return  403
           }
        }

image.png

cd /data/nginx/html/pc/

在此目录在放入 a.jpg 和 error.png

#用于测试的图片

image.png

第二台主机

#关闭防火墙和selinux
systemctl stop firewalld 
setenforce 0
yum install epel-release.noarch -y
yum install nginx -y
cd /usr/share/nginx/html

vim  index.html

<html>
<body>
<h1>this is byyb  </h1>
<img src="http://www.byyb.com/a.jpg"/>
</body>
</html>

#保存后启动服务
systemctl start nginx 

image.png

#修改主配置文件
vim  /etc/nginx/nginx.conf 

#41行修改
server_name  www.accp.com;

image.png

修改windows的本地hosts文件,添加映射关系

image.png

开始测试 防盗链是否配置成功