配置Nginx的防盗链,实现网站资源防盗

本文以图片链接防盗链作为列子,其他静态资源类似
nginx原始配置:

location /file {
            proxy_pass http://xxxx/file;
            proxy_set_header Host xxxxxx;
            proxy_set_header X_Real_IP $remote_addr;
            proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 2000;
            proxy_send_timeout 2000;
            proxy_read_timeout 6000;
         }

在这里插入图片描述
此处的src的link copy出来是可以直接网页访问的
在这里插入图片描述
开始配置

    location /file {
			valid_referers 101.231.xx.xxx  xxxx.com.cn;
			if ($invalid_referer) {
			   return 403;
			}
           proxy_pass http://xxxx/file;
            proxy_set_header Host xxxxxx;
            proxy_set_header X_Real_IP $remote_addr;
            proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 2000;
            proxy_send_timeout 2000;
            proxy_read_timeout 6000;

         }

效果:
在这里插入图片描述
简单来说,Referer是HTTP协议中的一个请求报头,用于告知服务器用户的来源页面。比如说你从Google搜索结果中点击进入了某个页面,那么该次HTTP请求中的Referer就是Google搜索结果页面的地址。如果你的博客中引用了其他地方的一张图片,那么对该图片的HTTP请求中的Referer就是你那篇博客的地址。

本文中的方案,其实是用nginx获取http请求头中的referer,判断其是否在白名单内。如果不在,则不予放行,返回403。
在站点内加载资源的时候,请求头中是会带上本站点的地址的。而拷贝链接到浏览器中执行时,请求头中不会有refer,也就会被拦截掉了。

需要注意的是,请求头中的referer是很容易在代码中伪造的,因此这种方案是有一定局限性的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值