导读:本期聚焦于小伙伴创作的《phpEnv环境下如何配置Nginx实现图片资源防盗链保护》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《phpEnv环境下如何配置Nginx实现图片资源防盗链保护》有用,将其分享出去将是对创作者最好的鼓励。

在phpEnv环境中部署站点后,图片、视频等静态资源很容易被其他站点直接引用,导致服务器带宽被无效消耗,甚至影响正常用户的访问体验。通过配置Nginx的防盗链规则,可以限制只有指定域名的请求才能访问这些资源,从服务端层面避免资源被盗用。

phpEnv环境下如何配置Nginx实现图片资源防盗链保护

防盗链的基本原理

防盗链的核心是通过检查HTTP请求头中的Referer字段,判断发起请求的域名是否在允许的列表中。如果请求的Referer不在允许范围内,Nginx可以直接返回403禁止访问的状态码,或者返回一张默认的提示图片。

phpEnv中Nginx配置文件的位置

首先打开phpEnv的安装目录,找到对应站点使用的Nginx配置文件,默认路径为phpEnv安装目录nginxconfvhost,里面每个.conf文件对应一个虚拟主机的配置。也可以直接在phpEnv的面板中,找到对应站点的配置编辑入口,直接修改配置文件。

具体的防盗链配置步骤

1. 编辑站点Nginx配置

打开需要配置防盗链的站点配置文件,找到处理静态资源的location块,通常处理图片的location配置如下:

location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$ {
    expires 30d;
    access_log off;
}

2. 添加防盗链规则

在上面的location块中添加valid_referers指令,设置允许的访问域名,修改后的完整配置如下:

location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$ {
    # 允许的域名列表,none表示允许无Referer的请求(比如浏览器直接访问图片)
    valid_referers none blocked *.yourdomain.com yourdomain.com 127.0.0.1;
    # 如果Referer不在允许列表,返回403
    if ($invalid_referer) {
        return 403;
        # 也可以替换为返回指定提示图片,比如:
        # rewrite ^/ https://127.0.0.1/static/forbidden.jpg;
    }
    expires 30d;
    access_log off;
}

配置参数说明:

  • valid_referers:定义允许的Referer来源,none表示请求头中没有Referer字段的请求(比如用户直接在浏览器地址栏输入图片地址访问),blocked表示Referer字段存在但被防火墙或者代理服务器隐藏的情况,后面的域名是允许访问的具体域名,支持通配符匹配。
  • $invalid_referer:Nginx内置变量,如果请求的Referer不在valid_referers列表中,该变量值为1,否则为0。

3. 重载Nginx配置

修改完配置文件后,不需要重启整个phpEnv,只需要在phpEnv面板中点击Nginx的重载配置按钮,或者手动执行Nginx的重载命令,让配置生效即可。

配置验证方法

配置生效后,可以通过以下两种方式验证防盗链是否生效:

  • 直接在浏览器中访问站点的图片地址,能正常显示说明允许无Referer的请求配置生效。
  • 创建一个其他域名的测试页面,页面中通过<img>标签引用站点内的图片,如果图片无法加载或者返回403,说明防盗链规则生效。

注意事项

如果站点需要允许搜索引擎爬虫访问图片,可以把常见的搜索引擎域名添加到valid_referers列表中,比如*.baidu.com*.google.com等。另外如果站点使用了CDN,需要把CDN的域名也添加到允许列表中,避免正常访问被拦截。

phpEnvNginx防盗链图片资源保护修改时间:2026-07-19 08:30:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。