码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx防盗链

时间:2019-06-03 09:31:49      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:magedu   修改   window   app   虚拟服务器   windows   index   访问者   host   

Nginx防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站的图片或某个单独的资源,而不是打开整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种
none:请求报文没有referer首部,比如用户直接在浏览器输入域名访问往web网站,就是么有referer信息
blocked:请求报文由referer信息,但无又有效值为空
server_names:referer首部中包含本主机及nginx监听的server_name
arbitrary_string:自定义指定字符串,但使用作通配符
regular experssion:被指定的正则表达式模式匹配到的字符串,需要使用~开头,如:~.
.magedu.com

防盗链的实现

准备2台虚拟服务器,一个域名为www.mylinuxops.com,另一个域名为www.melinuxops.com
1.www.mylinuxops.com配置文件及站点内容

[root@localhost www]# vim /apps/nginx/conf/servers/vs.conf 
server {
    server_name www.mylinuxops.com;
    location / {
        root /data/www;
        index index.html;
  }
}

站点资源

[root@localhost www]# tree /data/www
/data/www
├── index.html
└── tupian.gif

0 directories, 2 files

2.www.melinuxops.com配置文件及站点内容

[root@localhost www]# vim /apps/nginx/conf/servers/vs.conf 
server {
    server_name www.melinuxops.com;
    location / {
        root /data/www;
        index index.html;
  }
}

站点资源

[root@localhost ~]# tree /data/www/
/data/www/
└── index.html

0 directories, 1 file

[root@localhost ~]# cat /data/www/index.html    #次为盗链的文件
<!DOCTYPE html>
<html long="en">
<head>
    <meta charset="UTF-8">
    <title>盗链页面</title>
</head>
<body>
<a href="http://www.mylinuxops.com">盗链测试</a>
<img src="http://www.mylinuxops.com/tupian.gif">
</body>
</html>

未设置防盗链访问测试

访问www.mylinuxops.com/tupian.gif
技术图片
访问盗链站点www.melinuxops.com
技术图片
查看日志被盗链站点日志

172.20.136.96 - - [01/Jun/2019:10:57:06 +0800] "GET /tupian.gif HTTP/1.1" 200 489620 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"
172.20.136.96 - - [01/Jun/2019:10:59:11 +0800] "GET /tupian.gif HTTP/1.1" 200 489620 "http://www.melinuxops.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"
#第二条日志为被盗链的日志

设置防盗链

基于访问安全考虑,nginx支持通过ngx_http_referer_module模块,检查访问者请求的referer信息是否有效,实现防盗链。

实现方法

修改www.mylinuxops.com的配置文件

[root@localhost www]# vim /apps/nginx/conf/servers/vs.conf 

server {
    server_name www.mylinuxops.com;
    access_log /apps/nginx/logs/access.log main;
    location / {
        root /data/www;
        index index.html;
        valid_referers none blocked server_names *.mylinuxops.com mylinuxopx.* ~\.google\.;
        if ( $invalid_referer ){
          return 403;
     }
  }
    location = /favicon.ico {
        log_not_found off;
        access_log off;
  }
}

再次访问盗链站点
技术图片

Nginx防盗链

标签:magedu   修改   window   app   虚拟服务器   windows   index   访问者   host   

原文地址:https://blog.51cto.com/11886307/2403949

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!