配置Nginx实现简单的反盗链

盗链是指一个网站的资源(图片资源、视频资源、文件等)未经许被其它网站提供浏览和下载。

盗链行为会对服务器资源以及带宽消耗非常大,但实际网站的访问量却并没有得到提升。所以网站必须要有有效的防盗链措施。

本文通过Nginx的配置指令valid_referers来实现简单的图片和其它类型文件的防盗链。

nginx 配置内容如下:

location ~ .(jpg|png|gif)$ {
     valid_referers none blocked mysite.com *.mysite.com;
     if ($invalid_referer) {
         return   403;
     }
}

用 “ | ” 来分隔你想保护的文件的扩展名。

valid_referers指令允许你定义一个网站列表,当不在列表中的网站访问时,返回403错误。

none参数表示匹配没有Referer的HTTP请求。

blocked参数表示请求有Referer,但是被防火墙或者代理服务器修改,去掉了https://或http://。

后面跟网站列表,支持顶级域名和二级域名以及通配符。

除了使用location对文件访问进行限制,也可以对指定目录进行限制。

下面的配置会对images目录下所有文件进行防盗链处理:

location /images/ {
     valid_referers none blocked mysite.com *.mysite.com;
     if ($invalid_referer) {
         return   403;
     }
}

这些配置都是简单的防盗链方法。可有效地屏蔽一些直接引用网站链接的盗链方式;如果盗链网站伪造了HTTP请求,这种方法不能有效地屏蔽。

反盗链的一些其它措施

比较原始的方法是定期更换目录名或者文件名。这种方法可使用脚本程序来自动化处理。比较高级的方法是进行Cookie或者Session加密验证,添加验证码等。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/1152.html

分类: 计算机技术
推荐阅读:
Golang中 :=的详细用法 在Go语言中:=运算符被用来声明变量以及给变量赋值,它可以自动推断变量类型;
PySide6模块的导入和使用 Qt拥有众多的模块帮助你构建应用程序,例如QtCore,QtGui,QtNetwork,QtOpenGL,QtQuick,QtQml,QtWidgets等等;本文将讲解PySide6常用模块的功能以及在Python中的导入和使用方法;
从PyInstaller打包生成的EXE文件中提取Python源码 本文将详细讲解怎么使用 pyi-archive_viewer 和 uncompyle6 工具提取pyinstaller打包生成的EXE中的pyc文件,并将其正确的解码成py源码。
Rust debug_assert_eq宏的用法和示例 在Rust语言中,debug_assert_eq宏专门用于进行调试时的值相等性检查。它类似于assert_eq宏,但有一个重要的区别:debug_assert_eq只能在Rust的debug模式下进行检查,这意味着在发布应用程序时,所有的debug_assert_eq检查都会被编译器完全移除,不会影响最终的执行代码。
Python len()函数 在Python中,len()函数用于返回一个对象的长度(元素个数)。这个对象可以是序列类型(如字符串、列表、元组、字节序列等),也可以是映射类型(如字典)。
Python字符串split()方法 在使用Python处理字符串时,你可能需要将字符串拆分为若干个子字符串;Python中的字符串方法split()可以帮助你完成这个任务。