nginx配置防盗链

article/2025/10/12 17:43:07

现在流行前后端分离开发的情况下,一般我们都会将静态资源放在nginx的html目录下。这种情况下,我们就无法通过Java代码写拦截器来防盗链了。所以这里我们来说明一下如何使用nginx来配置防盗链。

1.我们先修改本地hosts文件,将 www.czx.com 映射到 127.0.0.1。
在这里插入图片描述
2.在html文件夹下放一张图片,图片名就叫123.jpg
在这里插入图片描述
然后修改nginx的html文件夹下的index.html,在里面添加标签

<img src="http://www.czx.com/123.jpg" />

3.打开nginx.conf配置文件,添加以下配置

server {listen      80;#表示监听的url,如果收到这个url的请求,就会进行反向代理server_name   www.czx.com;# 括号里面是要保护的资源类型location ~* \.(gif|jpg|jpeg|png)$ {# 配置可以合法的refer,在这里配置加入白名单的请求 refer 域名。valid_referers blocked www.czx.com http://www.czx.com;if ($invalid_referer) { return 403; #返回403错误代码} }location / {root   html;index  index.html index.htm;}}

我们首先要知道http请求头中是有一个Referer的属性,它代表了这个http请求的来源。比如我们打开百度首页,浏览器会向服务端发送http请求来获取首页图片,这些http请求中往往都会带有Referer,而此时的Referer属性正是https://www.baidu.com/,表示这个请求是来自https://www.baidu.com/。
在这里插入图片描述
在了解了以上知识点后我们再来讲解valid_referersvalid_referers节点表示合法的请求来源(Referer),如果请求来源合法,即 Referer 能够与valid_referers后面任一参数所匹配,那么这个请求就会被放行。

valid_referers可以配置多种属性,一般会有以下几种

  • blocked:Referer 来源不为空,但是里面的值被代理或者防火墙删除了
  • none:代表请求的 Referer 为空,也就是直接访问,比如在浏览器中直接访问图片 www.czx.com/123.jpg,直接访问时,Referer 会为空。这里我没有加上none,也就表示直接访问是非法的。
  • server_names:Referer 来源包含当前的 server_names,即所有 server 节点的 server_name 的值,如果配置了 server_names,那么这些值都会是合法来源。
  • 字符串:直接定义合法的域名,比如我定义了 www.czx.com 和 http://www.czx.com,Referer是这两个域名的话就会是合法来源。
  • 正则表达式:通过正则表达式来定义合法的请求来源。

4.保存配置然后启动nginx,我们先直接访问www.czx.com/123.jpg
在这里插入图片描述
图片无法直接访问。

我们访问www.czx.com
在这里插入图片描述
图片可以被正常访问到。
这里有个值得注意的点是,访问过www.czx.com之后,再去访问www.czx.com/123.jpg就可以打开图片了,这是因为浏览器中有缓存,并非nginx防盗链失效了,只要把浏览器中的缓存清除掉,www.czx.com/123.jpg就依然返回403状态码。

PS:这种防盗链的方法原理是通过判断http请求头中的Referer属性是否与配置中的设定允许,如果允许就放行,如果不允许就返回403状态码。但是这种方式只是防君子不防小人,一些爬虫软件依然可以伪造假的Referer来爬取资源。


http://chatgpt.dhexx.cn/article/qvbo5RX7.shtml

相关文章

java防盗链_javaWeb防止恶意登陆或防盗链的使用

使用场景:明明引用了一个正确的图片地址,但显示出来的却是一个红叉或写有“此图片仅限于***网站用户交流沟通使用”之类的“假图片”。用嗅探软件找到了多媒体资源的真实地址用下载软件仍然不能下载。下载一些资源时总是出错,如果确认地址没错的话,大多数情况都是遇上防盗链…

防盗链机制

防盗链机制的几种实现 通常防盗链是为了防止图片&#xff0c;视频被盗用。下面简单介绍几种防盗链的机制&#xff1a; 1. 利用HTTP Referer字段 HTTP请求中会包含来自哪个url的点击来源&#xff0c;通过这个referer字段可以检测是否别的网站发送的请求。 2.利用登录验证信息 有…

网络中的防盗链是指什么?

什么是盗链&#xff1f; 比如,别人上传的东西,你直接拿了LINK去,贴到别的论坛或者网站,宣称"有好东西,快来下载",又或者告诉你的朋友"你要这个文件?俺有连接,快下",然后在那里接受别人的滔滔不绝的景仰之情。 “盗链” 的定义是&#xff1a; 此内容不在…

Nginx防盗链

Nginx防盗链的实现原理&#xff1a; 了解防盗链的原理之前&#xff0c;我们得先学习一个HTTP的头信息Referer,当浏览器向web服务器发送请求的时候&#xff0c;一般都会带上Referer,来告诉浏览器该网页是从哪个页面链接过来的。 后台服务器可以根据获取到的这个Referer信息来判…

Nginx-防盗链

目录 一、什么是盗链 如何区分哪些是不正常的用户&#xff1f; Referer理解 二、Nginx配置防盗链 三、使用 curl 测试防盗链 四、企业实战 1.设置返回错误页面 2.整合 rewrite 返回报错图片 一、什么是盗链 在实际生产过程中&#xff0c;我们线上的图片等静态资源&#…

Nginx:防盗链原理和配置

目录 一、防盗链概念 二、Nginx防盗链的具体实现 配置&#xff1a; 三、验证和验证时的问题 真正的验证&#xff1a; 没有none的验证 加上none参数的验证 让报错返回的是一张图片 注意事项&#xff1a; 一、防盗链概念 防盗链简单来说就是存在我们服务中的一些资源&#xff…

Java:eclipse下开发webservice教程

1 环境准备 下载wtp-all-in-one-sdk-R-1.5.4-win32&#xff0c;这个是eclipse的web开发插件 下载jakarta-tomcat-5.0.30 下载axis-src-1_4.zip 2 环境配置 配置tomcat关联到你的eclipse中 将axis-1_4\webapps\axis\WEB-INF\lib中的文件复制到$TOMCATHOME$\…

webservice 教程学习系列(九)——使用cxf框架开发webservice

首先下载两个包&#xff1a;apache-cxf-3.2.7.zip和apache-cxf-3.2.7-src.zip 解压两个包&#xff0c;进入apache-cxf-3.2.7的bin目录 可以看到wsdl2java.bat&#xff0c;这个相当于jdk自带的wsimport.exe的功能&#xff0c;可以将wsdl文件转换成java文件。 这里我的目录是&a…

WebService开发教程

一、webservice 开发 1.webservice介绍 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求&#xff0c;轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务&#xff0c;使用WSDL文件进行说明&#xff0c;…

MyEclipse开发WebService教程

创建一个 webService 工程。 2. 创建一个普通 Java 类 view plain copy to clipboard package com.hmw.jaxws; /** * 提供 WebService 服务的测试类<br> * <b>注意&#xff1a;</b>该类必须有一个无参构造方法&#xff0c;否则无法使用 MyEclipse 的向导为此…

WebService培训教程详解

开发webservice 1. 概述 开发手段&#xff1a;使用JDK开发(1.6及以上版本)使用CXF框架开发(工作中)组成&#xff1a;服务器端客户端 2. 使用JDK开发WebService 1).开发服务器端 Web Service编码&#xff1a;WebService( SEI和SEI的实现类)WebMethod(SEI中的所有方法)发布W…

SoapUI测试webservice接口

方法1、导入wsdl文件 输入参数&#xff0c;点击运行&#xff0c;看到响应结果 方法2、输入wsdl地址 项目名随便起一个&#xff0c;Initial WSDL直接输入wsdl地址&#xff0c;确定即可。

孔浩老师 java 微信_孔浩老师JAVA WebService教程

课程目录&#xff1a;01_webservice快速实例 02_wsimport的使用 03_wsdl和soap讲解(介入了tcpmon工具) 04_SOA的分析(纯属扯淡) 05_dtd讲解 06_schema的命名空间 07_schema的元素和属性的定义 08_schema的语法和建议的编写方式 09_使用jaxb完成对象和xml的转换 10_Stax的基本操…

.Net WebService简单学习

一、什么是WebService Web Service是一个使用开放的XML&#xff08;标准通用标记语言下的一个子集&#xff09;标准来描述、发布、发现、协调和配置这些应用程序&#xff0c;用于开发分布式的交互操作的应用程序。 Web Service技术&#xff0c; 能使得运行在不同机器上的不同应…

java webservice 入门教程_WebService入门实例教程

什么是WebService 通过使用WebService&#xff0c;您的应用程序可以向全世界发布信息&#xff0c;或提供某项功能&#xff0c;它是基于Web的服务&#xff0c;通过Web进行发布、查找和使用。 WebService脚本平台需支持XMLHTTP。 HTTP协议是最常用的因特网协议。 XML提供了一种可…

idea使用xfire方式发布webservice教程

近日在熟悉webservice发布的过程&#xff0c;此处主要讲解xfire方式。 1.使用idea新建一个web项目 步骤1&#xff1a; 按照图中的指定序号建立对应的web项目即可。 步骤2&#xff1a; 填写组织ID和具体项目id&#xff0c;点击进行“下一步”即可。 步骤3&#xff1a; 设置相…

java发布webService服务教程

发布webService服务并使用soap UI测试 发布简单的webService服务同时发布多个webService接口使用SoapUI测试webService接口下载SoapUI并安装打开WSDL文件测试文件上传 示例源码 发布简单的webService服务 新建一个Maven项目pom引入 webService需要的依赖 <dependency>&…

WebService 教程(包含项目实践)

情景引入&#xff1a; 时间&#xff1a;早晨 8 : 00 am 小白&#xff1a;起床起床&#xff0c;&#xff0c;&#xff0c;公司又来需求了&#xff0c;你还在睡觉&#xff0c;快点起来~&#xff01; 我&#xff1a;大惊小怪&#xff0c;又怎么了呢&#xff1f;小白&#xff0c…

最详细的idea创建webservice教程

最详细的idea创建webservice教程 创建服务端 File->New Project 点击next&#xff0c;会自动生成demo将要发布的类加上WebService&#xff0c;方法加上WebMethod&#xff0c;设置服务发布address WebService() public class HelloWorld {WebMethodpublic String sayHello…

WebService简单入门

1. JAX-WS发布WebService 创建web工程 创建simple包&#xff0c;和server、client两个子包。正常情况下server和client应该是两个项目&#xff0c;这里我们只是演示效果&#xff0c;所以简化写到一个项目中&#xff1a; 1.1 创建服务类Server package simple.server;import ja…