Nginx防盗链保护跨境产品图:跨境产品图被盗链?手把手教你

## 为什么跨境产品图需要防盗链? 做跨境电商的朋友,产品图就是核心资产。一旦图片被其他网站直接引用(俗称盗链),你的服务器带宽会被白嫖,加载速度变慢,还可能因为流量超标产生额外费用。更严重的是,竞争对手直接复制你的图片,影响成交转化。Nginx 的 `valid_referers` 模块可以轻松解决这个问题——只允许指定域名引用你的图片,其他请求一律返回 403 或替换成警示图。 ## 配置前的准备工作 你只需要两样东西: - **服务器权限**:能通过 SSH 登录,或者使用宝塔面板等可视化管理工具。 - **Nginx 已安装**:大部分建站环境默认安装。不确定的话,在 SSH 中执行 `nginx -v` 查看版本。 如果你用宝塔面板,配置过程会简单很多,下文会分别给出 SSH 命令行和宝塔面板两种操作方式。 ## Nginx 防盗链规则详解(基于 valid_referers) 核心原理是检查 HTTP 请求头中的 `Referer` 字段。`valid_referers` 指令可以列出允许的域名,未匹配的请求会被拒绝。下面是一段常见的配置,放在 `server` 块内或者 `location` 块中(推荐针对图片目录单独设置)。 ```nginx location ~* \.(jpg|jpeg|png|gif|webp)$ { valid_referers none blocked server_names *.example.com example.com; if ($invalid_referer) { return 403; } # 如果你希望返回一张警示图而不是 403,可以用 rewrite # rewrite ^ /images/forbidden.jpg break; } ``` **说明**: - `none`:允许直接输入图片 URL 访问(不携带 Referer)。 - `blocked`:允许隐藏了 Referer 的合法请求(通常由浏览器隐私模式产生)。 - `server_names`:允许当前服务器的域名。 - `*.example.com` 和 `example.com`:替换成你的跨境网站域名。 - 如果 `Referer` 不在白名单内,`$invalid_referer` 变量变为真,触发 `return 403`。 保存配置后,执行 `nginx -t` 检查语法,然后 `systemctl reload nginx` 重载即可。 ## 宝塔面板配置防盗链操作路径 如果你用宝塔,不需要手写配置文件,图形化操作更快: 1. 登录宝塔面板,进入 **网站** → 点击对应网站的 **设置**。 2. 找到 **防盗链** 选项卡(有些版本叫“防盗链”)。 3. 开启防盗链开关。 4. 在“允许访问的域名”中添加你的主域名和子域名,每行一个,例如: ``` example.com www.example.com ``` 5. 在“文件类型”中填写要保护的图片后缀:`jpg|jpeg|png|gif|webp`。 6. 可选添加一个错误提示图链接,当被拒绝时显示你指定的图片。 7. 点击保存。宝塔会自动修改 Nginx 配置并重载,无需手动操作。 **注意**:如果使用了 CDN(如 Cloudflare),一定要在“允许访问的域名”中加入 CDN 的回源域名,否则 CDN 节点请求图片时可能因为 Referer 为空而被拦截。 ## 高频问题与避坑指南 **1. 配置后自己网站的图片都无法显示?** 检查白名单是否包含了完整的子域名。比如你的网站是 `www.example.com`,但只写了 `example.com`,部分浏览器可能发送 `Referer` 为 `http://www.example.com`,需要两种都加上。 **2. 用了 CDN 怎么办?** CDN 回源时 Referer 可能为空,记得在 `valid_referers` 中添加 `none`,或者在宝塔中放行 CDN 的回源 IP 段(更推荐用 `none`)。 **3. 为什么偷懒只写了 `return 403`,但用户看不到错误信息?** 403 在浏览器中会显示空白或错误页,对用户体验不友好。建议改用 `rewrite` 指向一张友好的提示图,例如“图片已保护,请访问官方网站”。 **4. 搜索引擎爬虫会被拦截吗?** 百度、Google 的爬虫通常不发送 Referer,使用了 `none` 后它们可以正常访问。但如果你的规则中漏掉了 `none`,可能导致缩略图索引丢失。 ## 验证防盗链是否生效 配置完成后,按下面两步验证: - **直接打开图片链接**:在浏览器地址栏输入你的产品图片 URL,应该能正常显示(因为 Referer 为空且规则允许 `none`)。 - **模拟盗链场景**:打开一个本地 HTML 文件,用 `` 的方式引用,用浏览器打开该本地文件。如果配置生效,图片不会显示,控制台会提示 403 错误。 - **查看日志**:在 Nginx 错误日志(`/var/log/nginx/error.log`)中搜索 `403`,可看到哪些 IP 或域名被拒绝。 ## 最后再收一下重点 保护跨境产品图并不复杂,核心就是利用 Nginx 的 `valid_referers` 模块设置白名单。无论你用的是命令行还是宝塔面板,按照本文的步骤都能在十分钟内完成配置。记住加上 `none` 避免误伤正常用户,如果用了 CDN 也要调整白名单。遇到问题先检查域名拼写和配置语法,一般都能快速解决。
分享到:
上一篇
Nginx负载均衡多服务器分发从配置到验证完整指南
下一篇
Nginx跨域问题API中转解决:零基础配置教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意