Nginx配置Referer模块防止图片盗链

nginx的http_referer模块默认应该都有,就不说怎么安装了。

用到这个是因为一个网站没有用cdn,但是又要考虑图片防止盗链的问题,完全防止是不可能的,只是加个难度而已,并且还可以伪装referer,但既然用到了还是简单记录下吧。

有2种规则:

一、允许为空访问

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
            valid_referers none blocked server_name *.jingxialai.com www.jingxialai.com/shop/ ~\.google\.;
            if ($invalid_referer) {
               return 403;
               #rewrite ^.*$ https://www.google.com;
            }
  }

none:为空没有referer也可以直接访问
blocked:referer没有值也可以访问;请求头Referer字段不为空(即存在Referer),但是值被代理或者防火墙删除了,这些值不以“http://”或“https://”开头,通俗点说就是允许“http://”或"https//"以外的请求。比如Referer为http://www.baidu.com则会拦截,若是Referer为www.baidu.com或wss://www.baidu.com则不会拦截
server_name:nginx配置的域名,有的可能是server_names
www.jingxialai.com/shop/:从这个页面的请求都可以访问
*.jingxialai.com:域名正则可以访问
~.google.:只要识别到有google正则都可以访问
二、为空不允许访问

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
            valid_referers *.jingxialai.com;
            if ($invalid_referer) {
               return 403;
               #rewrite ^.*$ https://www.google.com;
            }
  }

就是把none blocked删了,这样就不能在浏览器打开这张图片了。

referer的防盗链很简单,也很容易破解,如果你网站要求不严格,用这个也可以了,如果很严格再继续看看别的。

posted @   锋大爷  阅读(707)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示