【Nginx】Nginx防盗链的配置详解
前情提要本篇博客详细介绍了防盗链以及配置盗链盗取网站资源和配置防盗链防止别人盗取两种示例通过本篇博客你可以学会利用nginx配置盗链和防盗链环境清单真实服务主机172.25.254.10/24盗链主机172.25.254.11/24一、Nginx防盗链简介防盗链基于客户端携带的referer实现referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息如果别人只链接了自己网站图片或某个单独的资源而不是打开了网站的整个页面这就是盗链referer就是之前的那个网站域名正常的referer信息有以下几种none #请求报文首部没有referer首部 #比如用户直接在浏览器输入域名访问web网站就没有referer信息。 blocked #请求报文有referer首部但无有效值比如为空。 server_names #referer首部中包含本主机名及即nginx 监听的server_name。 arbitrary_string #自定义指定字符串但可使用*作通配符。示例: *.timinglee.org www.timinglee.* regular expression #被指定的正则表达式模式匹配到的字符串,要使用~开头例如 ~.*\.timinglee\.com正常通过搜索引擎搜索web网站并访问该网站的referer信息如下172.25.254.1 - - [22/Jul/2024:09:27:36 0800] GET /favicon.ico HTTP/1.1 404 149 http://lee.timinglee.org/ Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0 2024/07/22 09:27:36 [error] 34596#0: *205 open() /webdata/nginx/timinglee.org/lee/favicon.ico failed (2: No such file or directory), client: 172.25.254.1, server: lee.timinglee.org, request: GET /favicon.ico HTTP/1.1, host: lee.timinglee.org, referrer: http://lee.timinglee.org/二、实现盗链在一个web站点盗链另一个站点的资源信息比如:图片、视频等# 创建放盗链文件 [rootNginx ~]# mkdir /webdata/nginx/doubledragon.org/daolian [rootNginx ~]# mv daolian.png /webdata/nginx/doubledragon.org/daolian/ # 创建盗链文件 [rootNginx ~]# mv dragon.png /webdata/nginx/doubledragon.org/img/ # 在新的一台主机配置盗链 [rootNginx2 ~]# vim /var/www/html/index.html html head meta http-equivContent-Type contenttext/html;charsetutf-8 title盗链/title /head body img srchttp://www.doubledragon.org/img/dragon.png h1 stylecolor:red欢迎大家/h1 pa hrefhttp://www.doubledragon.org狂点dragon/a出门见喜/p /body /html访问测试可以看见如果没有防盗措施那么盗版网站可以直接使用我们的网站内的图片和资源等点击链接也可以直接跳转到我们的页面三、实现防盗链# 编辑nginx子配置文件 [rootNginx ~]# vim /usr/local/nginx/conf/conf.d/vhost.conf server { listen 80; server_name www.doubledragon.org; root /webdata/nginx/doubledragon.org; location / { valid_referers none blocked server_names *.doubledragon.org ~/.baidu/.; if ($invalid_referer){ return 404; } } location /img { valid_referers none blocked server_names *.doubledragon.org ~/.baidu/.; if ($invalid_referer){ rewrite ^/ http://www.doubledragon.org/daolian/daolian.png; } } } # 配置文件解析 # 第一段 valid_referers定义了哪些来源被认为是“合法”的。 none请求头中没有 Referer 字段例如直接在浏览器输入网址。 blockedReferer 字段存在但被防火墙或代理屏蔽了。 server_namesReferer 是本服务器配置的域名即 www.doubledragon.org。 *.doubledragon.org所有 doublerdragon.org 的子域名。 ~/.baidu/.正则匹配允许来自百度baidu的请求通常是为了让搜索引擎爬虫能正常抓取。 if ($invalid_referer)如果请求的来源不在上述白名单中即变量 $invalid_referer 为真则执行大括号内的操作。 return 404;直接返回 HTTP 404 错误页面。这意味着如果有人在别的网站引用了你网站上的普通文件非图片请求会被直接拒绝。 # 第二段 valid_referers这里的白名单规则与上面完全一致。 rewrite ^/ http://www.doubledragon.org/daolian/daolian.png; 当非法请求访问 /img 目录下的资源时不会返回 404 错误。 而是使用 rewrite 指令将请求重定向到一个特定的图片http://www.doubledragon.org/daolian/daolian.png。 实际效果如果其他网站盗链了你网站的图片他们网页上显示的将不再是他们想要的图片而是你指定的这张 daolian.png通常是一张“禁止盗链”或网站 Logo 的图片。可以看见盗版网站无法访问我们的图片资源了点击链接也会出现404
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2495665.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!