如何在Linux中配置Web服务器防盗链 Nginx/Apache防止资源盗用的方法

秋静酱_6410

秋静酱_6410

2026-05-30

732人浏览

原创

nginx防盗链首选valid_referers + $invalid_referer + if + return 403,apache需mod_rewrite;两者仅防懒盗链,防伪造需nginx secure_link或apache lua模块,且valid_referers必须置于location块内按资源类型配置,none和blocked不可或缺。

如何在linux中配置web服务器防盗链 nginx/apache防止资源盗用的方法

直接结论:Nginx 防盗链首选 valid_referers + $invalid_referer + if + return 403,开箱即用、无需编译;Apache 则靠 RewriteCond + RewriteRule 实现,但必须启用 mod_rewrite。两者都只防“懒盗链”,无法抵御 Referer 伪造——真要防伪造,Nginx 得上 secure_link 模块(多数发行版默认不带),Apache 得配合 Lua 或自定义鉴权模块。

为什么 valid_referers 必须写在 location 块里

valid_referers 只在 server 或 location 块中生效,写在 http 块顶层完全无效——Nginx 启动时不报错,但所有防盗链逻辑形同虚设。

  • 常见错误:把 valid_referers none blocked example.com; 放在 http { } 里,结果所有 .jpg 请求都放行
  • 更隐蔽的坑:放在 location / 下,而非专门匹配资源的 location ~* \.(jpg|png|pdf)$,导致 HTML 页面也受 Referer 限制,内链跳转失败
  • 正确做法:按资源类型切分 location,例如图片、视频、PDF 各走各的规则,避免误伤或漏防

none 和 blocked 不是“宽松选项”,而是真实访问必需

none 允许请求头中压根没有 Referer 字段的请求,比如用户直接在浏览器地址栏输入图片 URL、点击收藏夹、PWA 离线加载;blocked 允许 Referer 被中间代理/企业网关/浏览器扩展清空或改写成 localhost、about:blank、127.0.0.1 的请求。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 漏掉 none:移动端 WebView 加载图片失败、微信内嵌页白屏
  • 漏掉 blocked:内网调试时图片全 403、某些银行/政企环境访问异常
  • 域名匹配不看协议和路径:写 example.com 不等于 www.example.com,子域名必须显式写 *.example.com

return 403 比 rewrite 到默认图更可靠

用 return 403 是最干净的选择,HTTP 语义明确,日志可直接过滤盗链流量;而 rewrite ^/ /static/forbidden.png break; 会埋下多个隐患:

  • 原始请求带查询参数(如 /img/logo.png?v=2)时,rewrite 默认不携带参数,导致默认图 URL 错误、返回 404
  • 状态码仍是 200,监控系统无法区分“正常访问”和“盗链伪装”
  • 若 /static/forbidden.png 也在同一 location 下,可能触发二次匹配,形成隐式循环(除非加 last 或用精确匹配 location = /static/forbidden.png 排除)
  • 真要返回图片,应改用 error_page 403 =200 /static/forbidden.png;,既保持 403 语义,又统一返回内容

secure_link 模块不是“升级版 valid_referers”,而是另一套机制

secure_link 不依赖 Referer,而是靠 URL 中携带签名(如 /file.zip?md5=abc123&expires=1743728400),服务端用密钥重新计算哈希并校验时间戳。但它有硬性前提:

  • 编译 Nginx 时必须启用 --with-http_secure_link_module,Ubuntu/Debian 官方包、CentOS Stream 8+ 默认不含
  • 配置后需手动计算签名,前端调用必须带完整参数,不适合纯静态页面直出场景
  • 一旦密钥泄露或时间戳偏差过大,整个链接体系失效,运维成本远高于 valid_referers

真正容易被忽略的是:你写的 valid_referers 规则是否覆盖了所有合法来源?比如合作方用了 CDN 中转、第三方平台嵌入了 iframe、或者你自己开了 PWA 离线缓存——这些场景下的 Referer 行为都和普通浏览器不同,得实测验证,不能只靠“理论上应该能过”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux apache nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2712

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2456

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4552

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习