在搭建网站时,经常会遇到其他网站直接引用你服务器上的图片、视频等静态资源,这不仅会消耗你的带宽,还可能影响网站性能。这种行为称为“盗链”。为了保护你的资源不被非法使用,我们可以使用 Ubuntu防盗链设置 来限制外部网站的访问。本文将手把手教你如何在 Ubuntu 系统中,基于 Nginx 服务器进行防盗链配置,即使你是小白也能轻松上手。
什么是防盗链?
防盗链(Anti-leech)是一种通过判断 HTTP 请求头中的 Referer 字段,来识别请求是否来自合法来源的技术。如果请求不是来自你允许的域名,服务器就会拒绝提供资源(如返回 403 错误或一张提示图片)。
前提条件
你已安装 Ubuntu 系统(建议 20.04 或更高版本) 你已安装并运行 Nginx 作为 Web 服务器 你拥有对服务器的 root 或 sudo 权限步骤一:编辑 Nginx 站点配置文件
首先,打开你的站点配置文件。通常位于
/etc/nginx/sites-available/目录下。假设你的站点名为
example.com,执行以下命令:
sudo nano /etc/nginx/sites-available/example.com
步骤二:添加防盗链规则
在
server块内,找到或添加一个
location块,用于匹配静态资源(如图片、视频等)。以下是一个典型的防盗链配置示例:
location ~* \.(jpg|jpeg|png|gif|bmp|ico|webp|mp4|avi|flv|mp3)$ { valid_referers none blocked yourdomain.com *.yourdomain.com; if ($invalid_referer) { return 403; # 或者你可以返回一张提示图片: # rewrite ^/.*$ /images/hotlinking.png last; }}
代码说明:
valid_referers:定义合法的来源。其中:
-
none允许直接访问(如用户在浏览器地址栏输入图片链接)
-
blocked允许 Referer 被防火墙或代理隐藏的情况
-
yourdomain.com和
*.yourdomain.com是你自己的域名,需替换成实际域名
$invalid_referer:如果请求的 Referer 不在合法列表中,该变量为真
return 403;:直接返回 403 禁止访问错误 注释掉的
rewrite行可用于返回一张自定义提示图(需提前准备好
/images/hotlinking.png)
步骤三:测试并重载 Nginx
保存配置文件后,先测试 Nginx 配置是否正确:
sudo nginx -t
如果显示
test is successful,说明配置无误。接着重载 Nginx 使配置生效:
sudo systemctl reload nginx
验证防盗链是否生效
你可以通过以下方式测试:
在自己网站页面中嵌入图片,应能正常加载(因为 Referer 是你自己的域名) 在其他网站(或本地 HTML 文件)中引用你的图片链接,应无法加载或显示 403 错误 直接在浏览器地址栏输入图片 URL,应能正常访问(因为 Referer 为空,属于none情况)
小贴士:提升 Ubuntu服务器安全
除了防盗链,你还可以结合以下措施进一步增强 Ubuntu服务器安全:
定期更新系统和软件包 配置防火墙(如 UFW) 禁用不必要的服务 使用 HTTPS 加密传输总结
通过以上步骤,你已经成功完成了 Nginx防盗链配置,有效防止了他人盗用你的静态资源。这项设置不仅能节省带宽,还能提升网站的整体安全性。记住,防止图片盗链 只是服务器安全的一小部分,建议你持续关注整体安全策略。
如果你在操作过程中遇到问题,欢迎在评论区留言交流!
