温馨提示×

ubuntu nginx防盗链方法

小樊
40
2026-01-01 17:12:01
栏目: 智能运维

在Ubuntu上使用Nginx进行防盗链,可以通过配置Nginx的ngx_http_referer_module模块来实现。以下是具体的步骤:

1. 安装Nginx

如果你还没有安装Nginx,可以使用以下命令进行安装:

sudo apt update
sudo apt install nginx

2. 配置防盗链

编辑Nginx的配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default。你可以创建一个新的配置文件或直接编辑现有的。

方法一:使用valid_referers指令

server块中添加以下配置:

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";
        }
        root /var/www/html;
    }
}

在这个例子中:

  • valid_referers none blocked server_names example.com www.example.com; 允许来自none(直接访问)、blocked(被阻止的)和指定域名的引用。
  • if ($invalid_referer) 检查引用是否有效,如果无效则返回403 Forbidden。

方法二:使用add_headerX-Frame-Options

如果你希望更严格地控制防盗链,可以结合使用add_headerX-Frame-Options

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";
        }
        add_header X-Frame-Options "SAMEORIGIN";
        root /var/www/html;
    }
}

在这个例子中,X-Frame-Options "SAMEORIGIN" 防止页面被嵌入到其他域名的<iframe>中。

3. 测试配置

在保存配置文件后,运行以下命令测试Nginx配置是否正确:

sudo nginx -t

如果配置没有问题,你会看到类似以下的输出:

nginx: configuration file /etc/nginx/nginx.conf test is successful

4. 重新加载Nginx

最后,重新加载Nginx以应用新的配置:

sudo systemctl reload nginx

注意事项

  • 确保你的Nginx版本支持valid_referers指令。
  • 如果你有其他复杂的防盗链需求,可以考虑使用第三方模块或编写自定义的Nginx模块。

通过以上步骤,你可以在Ubuntu上使用Nginx实现基本的防盗链功能。

0