跳转到主内容
极星编程网:以代码为星,赴技术山海!

怎么在宝塔面板Nginx环境设置反盗链_通过配置文件添加referer限制

在宝塔面板中添加 referer 限制需将 valid_referers 和 if 判断写入匹配静态资源的 location 块内(如 location ~ .*.(jpg|png|js|css)$),保存后必须点击「重载配置」,并确保规则覆盖实际请求路径。 宝塔面板里直接改 Nginx 配置加
referer
限制,是可行的,但必须注意两点:一是规则要写在正确的位置(不能只丢在 server 块开头),二是宝塔会自动重写配置,手动改完不勾选「禁用配置修改提示」+ 不重启服务,大概率白干。 在哪写 referer 限制规则才生效 Nginx 的
valid_referers
和
if
判断必须放在
location
块内,且该 location 要覆盖到被保护的资源路径(比如图片、视频、JS/CSS)。如果写在
server
根块下,Nginx 会报错或静默忽略。 推荐位置:
网站 > 设置 > 配置文件
,找到类似
location ~ .*\.(jpg|jpeg|png|gif|js|css)$
的区块 不要写在
include /www/server/panel/vhost/xxx.conf
这类被宝塔托管的顶层文件顶部 如果站点用了伪静态(如 ThinkPHP/Laravel),确保 referer 规则在
location /
或更具体的静态资源匹配块里,而不是只在
location ~ \.php$
里 正确的 referer 限制写法(含常见坑) 直接抄下面这段进对应
location
块即可,但要注意域名末尾斜杠、协议、大小写——
valid_referers
默认不带协议和路径,只比对域名部分。 eclipse maven plugin插件安装和配置 中文WORD版 本文档主要讲述的是eclipse maven plugin插件安装和配置;感兴趣的朋友可以过来看看 下载
valid_referers none blocked server_names *.yourdomain.com yourdomain.com; if ($invalid_referer) { return 403; }
none
允许空 referer(比如直接在浏览器地址栏输入图片 URL);
blocked
允许被防火墙或隐私插件 stripped 的 referer(值为非标准字符串) 写
*.yourdomain.com
就能匹配 www 和子域名,但
yourdomain.com
必须单独列出来,通配符不匹配主域名本身 别写
https://yourdomain.com
——
valid_referers
不解析协议和路径,这么写等于完全失效 如果站点启用了 HTTPS,但用户用 HTTP 访问并引用资源,referer 值仍是
http://...
,而你的规则里只写了
https://...
,就会误杀 改完配置后必须做的三件事 宝塔不会自动应用你手写的 Nginx 片段,漏掉任一环节都会导致规则不生效。 保存 配置文件 后,点右上角「重载配置」按钮(不是「保存」,也不是「重启 Nginx」) 进
网站 > 设置 > SSL
,确认「强制 HTTPS」开关状态——如果开了,而 referer 规则里没包含 HTTP 版本域名,就可能拦截自家页面 临时用
curl -H "Referer: http://evil.com" https://yourdomain.com/test.jpg
测试返回是否为
403
;再用
-H "Referer: https://yourdomain.com"
确认正常请求不被拦 最常被忽略的是 location 匹配范围和重载动作——很多人改了配置却没重载,或者把规则塞进了只处理 PHP 的 location 里,结果图片请求根本没走到那条规则。referer 是 HTTP 头,它不区分后端语言,只看请求路径匹配哪个 location。

相关文章