温馨提示×

如何在nginx中设置防盗链

小樊
31
2025-11-11 11:36:09
栏目: 编程语言

在Nginx中设置防盗链,可以通过配置ngx_http_referer_module模块来实现。以下是具体的步骤:

1. 安装Nginx

确保你的服务器上已经安装了Nginx。如果没有安装,可以使用以下命令进行安装(以Ubuntu为例):

sudo apt update
sudo apt install nginx

2. 配置防盗链

编辑Nginx的配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default

方法一:使用valid_referers指令

serverlocation块中添加以下配置:

server {
    listen 80;
    server_name example.com;

    location /protected/ {
        valid_referers none blocked server_names example.com www.example.com;
        if ($invalid_referer) {
            return 403 "Forbidden";
        }
        # 其他配置
    }
}

解释:

  • valid_referers指令用于指定允许的引用来源。
    • none:不允许任何引用。
    • blocked:允许被Nginx阻止的引用。
    • server_names:允许指定的域名。
  • $invalid_referer变量会在引用无效时设置为1。

方法二:使用if指令和return指令

location块中添加以下配置:

server {
    listen 80;
    server_name example.com;

    location /protected/ {
        if ($http_referer !~* "example.com|www.example.com") {
            return 403 "Forbidden";
        }
        # 其他配置
    }
}

解释:

  • $http_referer变量包含HTTP请求头中的Referer字段。
  • !~*是不区分大小写的正则表达式匹配。

3. 测试配置

在修改配置文件后,使用以下命令测试Nginx配置是否正确:

sudo nginx -t

4. 重新加载Nginx

如果配置测试通过,重新加载Nginx以应用更改:

sudo systemctl reload nginx

5. 验证防盗链效果

尝试从不同的域名访问受保护的资源,确保只有来自允许域名的请求能够成功访问。

通过以上步骤,你可以在Nginx中设置防盗链,保护你的资源不被未经授权的网站引用。

0