nginx利用referer指令实现防盗链配置

发布时间 - 2026-01-10 23:24:38    点击率:

实现图片防盗链:

location ~* \.(gif|jpg|png|webp)$ {
   valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.;
   if ($invalid_referer) {
    return 403;
    #rewrite ^/ http://www.domain.com/403.jpg;
   }
   root /opt/www/image;
  }

以上所有来至domain.com和域名以及baidu和google的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。none规则实现了允许空referer访问,即当直接在浏览器打开图片,referer为空时,图片仍能正常显示.

[root@loya ~]# curl -I http://qingkang.me/1.jpg -H 'Referer:http://www.baidu.com'
HTTP/1.1 200 OK
Server: nginx/1.8.1
Date: Fri, 16 Dec 2016 14:56:51 GMT
Content-Type: image/jpeg
Content-Length: 17746
Last-Modified: Tue, 16 Aug 2016 03:20:21 GMT
Connection: keep-alive
ETag: "57b28675-4552"
Accept-Ranges: bytes
[root@loya ~]# curl -I http://qingkang.me/1.jpg -H 'Referer:http://www.qq.com'
HTTP/1.1 403 Forbidden
Server: nginx/1.8.1
Date: Fri, 16 Dec 2016 14:56:58 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 168
Connection: keep-alive

指令

语法: valid_referers none | blocked | server_names | string …;

配置段: server, location

指定合法的来源'referer', 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1. 需要注意的是:这里并不区分大小写的.

参数说明:

  1. none “Referer” 为空
  2. blocked “Referer”不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头,而是“Referer: XXXXXXX”这种形式
  3. server_names “Referer”来源头部包含当前的server_names(当前域名)
  4. arbitrary string 任意字符串,定义服务器名或者可选的URI前缀.主机名可以使用*开头或者结尾,在检测来源头部这个过程中,来源域名中的主机端口将会被忽略掉
  5. regular expression 正则表达式,~表示排除https://或http://开头的字符串.

注意

通过Referer实现防盗链比较基础,仅可以简单实现方式资源被盗用。构造Referer的请求很容易实现。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# nginx防盗链配置  # nginx  # referer  # 配置  # referer防盗链  # Nginx防盗链的3种方法  # Nginx防盗链的配置方法  # Nginx服务器下防盗链的方法介绍  # Nginx图片防盗链配置实例  # 配置Nginx的防盗链的操作方法  # Nginx配置防盗链的完整步骤  # nginx 防盗链防爬虫配置详解  # NGINX中浏览器的盗链与防止被盗的实现  # 为空  # 设置为  # 的是  # 防盗链  # 在这个  # 将会  # 很容易  # 可以使用  # 可选  # 便会  # 这篇文章  # 盗链  # 不以  # 需要注意  # 仍能  # 过程中  # 正常显示  # 来至  # 实现了  # 决定了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  HTML 中动态设置元素 name 属性的正确语法详解  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  怎么用AI帮你为初创公司进行市场定位分析?  怎么用AI帮你设计一套个性化的手机App图标?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何使用withoutEvents方法临时禁用模型事件  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  ,怎么在广州志愿者网站注册?  php json中文编码为null的解决办法  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  详解Huffman编码算法之Java实现  Linux网络带宽限制_tc配置实践解析【教程】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  node.js报错:Cannot find module 'ejs'的解决办法  如何挑选高效建站主机与优质域名?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel如何处理文件下载请求?(Response示例)  Android自定义控件实现温度旋转按钮效果  深圳网站制作平台,深圳市做网站好的公司有哪些?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  如何在IIS中新建站点并配置端口与IP地址?  如何在阿里云完成域名注册与建站?  重庆市网站制作公司,重庆招聘网站哪个好?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  JS碰撞运动实现方法详解  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何在 Pandas 中基于一列条件计算另一列的分组均值  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  网页设计与网站制作内容,怎样注册网站?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel如何实现事件和监听器?(Event & Listener实战)  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  zabbix利用python脚本发送报警邮件的方法  浅述节点的创建及常见功能的实现