Nginx web 资源防盗链学习笔记

2024-06-07 17:32

本文主要是介绍Nginx web 资源防盗链学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

  • 今天,浏览了 Nginx Web 资源防盗链的知识,在此做下笔记,当然,毕竟网上的介绍已经很是详细,重要的是在自己配置的过程,难免会有所偏差
  • 对于这一知识点的学习还是很有必要的,文中摘取整理了好多网上资源,个人觉得难点是在已配置 Nginx 的前提下对扩展的添加实现
  • 赘述一点,多参考前辈的介绍,根据错误进行排查,才能有更好的进步,祝你顺利…

【一】概念

(1).何为盗链

客户端向服务器请求资源时,
为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端。
比如在请求一个网页时,首先会传回该网页的文本内容,
当客户端浏览器在解析文本的过程中发现有图片存在时,
会再次向服务器发起对该图片资源的请求,服务器将存储的图片资源再发送给客户端。
在这个过程中,
如果该服务器上只包含了网页的文本内容,
并没有存储相关的图片资源,而是将图片资源链接到其他站点的服务器上去了,
这就形成了盗链行为

(2).防盗链原理

http 标准协议中有专门的字段记录 referer
一来可以追溯上一个入站地址是什么
二来对于资源文件,可以跟踪到包含显示他的网页地址是什么
因此所有防盗链方法都是基于这个 Referer 字段

【二】笔记

笔记截图

【三】重点

(1). valid_referer 的使用

①. valid_referer 指令的语法结构:

valid_referers none | blocked | server_names | string ....;
none 检测 Referer 头域不存在的请求
blocked 检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。
这种情况下,该头域的值不以 “http://” 或者 “https://” 开头
server_names 设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某个。
从 nginx 0.5.33 以后支持使用通配符 “*” 。

②. 配置格式 nginx.conf

location ~* \.(gif|jpg|png|flv|swf|rar|zip|webp)${valid_referers none blocked imuzxx.com *.imuzxx.com server_names ~\.google\. ~\.baidu\.;if ($invalid_referer) {return 403;#rewrite ^/ http://www.baidu.com/403.jpg;}

③. 提示:

  • 使用前,要求已经安装了此扩展模块
  • 对于 referer 的实现,如果盗链的网站通过伪造来路的 http 请求时不能屏蔽

④. 使用演示:

  • 配置文件修改前:

  • 配置文件添加内容:

  • 进行 nginx 重启,建议清除浏览器缓存后演示,修改后的界面显示:

(2). accesskey 使用

①. 配置格式 nginx.conf

location /download {accesskey on;accesskey_hashmethod md5;accesskey_arg "sign";accesskey_signature "signtip$remote_addr";
}
  • 释义:
    • accesskey 为模块开关;
    • accesskey_hashmethod 为加密方式 MD5 或者 SHA-1;
    • accesskey_arg 为 url 中的关键字参数;
    • accesskey_signature 为加密值,此处为 mypass 和访问 IP 构成的字符串。

②. 测试脚本举例

<?php$sign= md5("signtip".$_SERVER['REMOTE_ADDR']);$output_sign = "<a href=http://imuzxx.com/public/wozzxxLM.rar?sign=".$sign.">download_add_key</a><br />";$output_nosign="<a href=http://imuzxx.com/public/wozzxxLM.rar>download_org_path</a><br />";echo $output_sign;echo $output_nosign;?>
  • 图片的访问链接类似
 http://imuzxx.com/download/hello.zip?sign=edsds2324sdf234

④. 提示

  • 使用前,要求已经安装了此扩展模块
  • 一个可供下载的 accesskey 扩展包文件 本人测试环境没有通过,可能是自己操作的问题。

推荐文章

  • Nginx防盗链
  • Nginx防盗链的3种方法
  • 防盗链和反盗链的原理

这篇关于Nginx web 资源防盗链学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039828

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Nginx配置location+rewrite实现隐性域名配置

《Nginx配置location+rewrite实现隐性域名配置》本文主要介绍了Nginx配置location+rewrite实现隐性域名配置,包括基于根目录、条件和反向代理+rewrite配置的隐性... 目录1、配置基于根目录的隐性域名(就是nginx反向代理)2、配置基于条件的隐性域名2.1、基于条件

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx