当前位置:首页 > 服务器技术 > 正文

Nginx虚拟主机防盗链(手把手教你防止资源被盗用)

在搭建网站时,很多站长都会遇到一个问题:自己服务器上的图片、视频或文件被其他网站直接引用,不仅消耗了宝贵的带宽资源,还可能导致服务器负载过高。这种行为就叫做“盗链”。为了解决这个问题,Nginx虚拟主机防盗链功能就显得尤为重要。本文将从零开始,手把手教你如何在Nginx中配置防盗链规则,即使是小白也能轻松上手。

什么是盗链?

盗链是指其他网站通过直接引用你网站的资源链接(如图片、CSS、JS、视频等),让用户在访问他们的网站时自动加载你服务器上的资源。这会导致你的服务器带宽被大量占用,而你却得不到任何收益,甚至可能因流量超限被服务商限速或收费。

Nginx如何实现防盗链?

Nginx通过检查HTTP请求头中的 Referer 字段来判断请求是否来自合法网站。如果 Referer 不在白名单内,Nginx就会拒绝提供资源或返回一个替代内容(比如一张“禁止盗链”提示图)。

Nginx虚拟主机防盗链(手把手教你防止资源被盗用) Nginx防盗链 虚拟主机配置 防止盗链 Nginx安全设置 第1张

配置步骤详解

假设你已经有一个基于Nginx的虚拟主机,并希望对 /images/ 目录下的所有图片进行防盗链保护。

第1步:编辑Nginx虚拟主机配置文件

通常,虚拟主机的配置文件位于 /etc/nginx/sites-available//usr/local/nginx/conf/vhost/ 目录下。使用你喜欢的编辑器打开对应站点的配置文件:

server {    listen 80;    server_name www.yourwebsite.com;    root /var/www/html;    # 防盗链配置开始    location ~* \.(jpg|jpeg|png|gif|bmp|webp)$ {        valid_referers none blocked yourwebsite.com *.yourwebsite.com;        if ($invalid_referer) {            return 403;            # 或者返回一张提示图片:            # rewrite ^/.*$ /nohotlink.png last;        }    }    # 防盗链配置结束}  

第2步:理解配置参数

  • location ~* \.(jpg|jpeg|png|...):匹配所有图片格式的请求(不区分大小写)。
  • valid_referers:定义合法的来源。其中:
      - none:允许没有Referer的请求(如直接访问或书签);
      - blocked:允许Referer被防火墙或代理删除的情况;
      - yourwebsite.com *.yourwebsite.com:只允许来自你自己的域名及其子域名的请求。
  • $invalid_referer:当请求的Referer不在白名单中时,该变量为真。
  • return 403:直接返回403禁止访问错误;你也可以选择重定向到一张提示图(如注释所示)。

第3步:测试并重载Nginx

保存配置文件后,先测试配置是否正确:

nginx -t

如果显示“syntax is ok”,说明配置无误。接着重载Nginx使配置生效:

systemctl reload nginx

注意事项

  • Referer可以被伪造,因此防盗链不是100%安全,但能有效阻止大部分普通盗链行为。
  • 如果你的网站有CDN,需确保CDN支持传递原始Referer,否则可能导致合法用户也被拦截。
  • 不要对CSS、JS等静态资源过度限制,以免影响正常功能。

总结

通过以上配置,你已经成功为Nginx虚拟主机添加了防盗链功能。这不仅能节省服务器带宽,还能提升网站安全性。记住,防止盗链是每个站长都应重视的基础安全措施。同时,合理配置Nginx安全设置虚拟主机配置,能让你的网站运行更稳定、更高效。

掌握Nginx防盗链,从此告别资源被盗用!