最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 防盗链中返回错误图片如何配
时间:2026-09-03 08:08:49 编辑:袖梨 来源:一聚教程网
Nginx防盗链需用valid_referers定义合法Referer,配合if判断$invalid_referer重定向至免检错误图;错误图location须绕过防盗链,配置root、expires及正确MIME类型,并建议记录盗链日志。
在 Nginx 中实现防盗链并返回自定义错误图片,核心是通过 valid_referers 指令识别合法来源,再用 if + rewrite 或 return 重定向到一张提示图。关键在于路径配置、MIME 类型支持和缓存控制,避免出现 403 后图片不显示或被再次盗用。
配置 valid_referers 白名单
先定义哪些 Referer 是允许访问静态资源(如 jpg/png)的。支持域名通配、正则匹配和空 Referer(直接访问或浏览器拖入地址栏):
- 允许本站域名及子域:`valid_referers server_names *.example.com;`
- 允许空 Referer(防止某些客户端不带 Referer):`valid_referers none;`
- 支持正则匹配多个站点:`valid_referers ~.google.com ~.baidu.com;`
拦截非法请求并重定向到错误图
对图片后缀做 location 匹配,用 if 判断 referer 不合法时,用 rewrite 302 跳转到一张内置提示图(推荐用 rewrite 而非 return,便于浏览器缓存该图):
- location ~* .(jpg|jpeg|png|gif|webp)$ {
- if ($invalid_referer) {
- rewrite ^/.*$ /img/forbidden.png redirect;
- }
- }
注意:$invalid_referer 是 valid_referers 设置后自动生效的内置变量,值为 1 表示非法。
确保错误图可被正常访问且不被防盗链拦截
上面跳转的 /img/forbidden.png 必须绕过防盗链规则,否则会循环返回 403 或空白。方法是在其 location 块中显式关闭 referer 检查:
- location = /img/forbidden.png {
- # 禁用防盗链检查
- valid_referers none blocked *.example.com;
- # 或更简单:直接允许所有
- # valid_referers *;
- # 静态文件服务
- root /usr/share/nginx/html;
- expires 7d;
- }
补充建议:提升体验与安全性
仅返回图片还不够,建议加几项优化:
- 给错误图配置合适的 MIME 类型,避免浏览器解析失败:Nginx 默认支持 png/jpg,若用 webp 需确认
include mime.types已加载 - 添加
expires指令缓存错误图,减少重复请求 - 日志中记录盗链行为:在 if 块内加
access_log /var/log/nginx/hotlink.log main; - 避免使用
return 403直接响应——用户看不到图;也慎用return 302 /xxx,部分 CDN 或客户端可能不跟随重定向
相关文章
- MuleRun怎样生成招聘筛选标准 09-03
- Premiere如何制作胶片式滑动特效 09-03
- 如何关闭360安全卫士的文档保护 09-03
- TPLink TLWR847N 51~53 无线路由器控制小孩上网方法 09-03
- 初探Delphi中的插件编程实用指南 09-03
- xheditor所见即所得文本编辑器(代码高亮显示修改)实用指南 09-03