ubuntu

如何通过nginx配置实现防盗链

小樊
53
2025-09-25 21:01:37
栏目: 编程语言

通过Nginx配置实现防盗链,可以有效地防止他人未经授权地使用你的资源。以下是详细的步骤和配置示例:

1. 基本防盗链配置

1.1 允许特定域名访问

你可以允许特定的域名访问你的资源,其他域名则会被拒绝。

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;
        }
        # 其他配置,如代理、缓存等
    }
}

1.2 允许特定文件类型

你可以只允许特定的文件类型(如图片、视频)被访问。

server {
    listen 80;
    server_name example.com;

    location ~* \.(jpg|jpeg|png|gif|mp4|avi|mov)$ {
        valid_referers none blocked server_names example.com www.example.com;
        if ($invalid_referer) {
            return 403;
        }
        # 其他配置,如代理、缓存等
    }
}

2. 高级防盗链配置

2.1 使用签名验证

你可以生成一个签名,每次请求时都需要带上这个签名,服务器端验证签名的有效性。

server {
    listen 80;
    server_name example.com;

    location /protected/ {
        set $signature "";
        if ($arg_signature != "") {
            set $signature $arg_signature;
        }

        valid_referers none blocked server_names example.com www.example.com;
        if ($invalid_referer) {
            return 403;
        }

        # 验证签名
        if ($signature != "your_generated_signature") {
            return 403;
        }

        # 其他配置,如代理、缓存等
    }
}

2.2 使用Token验证

你可以生成一个Token,每次请求时都需要带上这个Token,服务器端验证Token的有效性。

server {
    listen 80;
    server_name example.com;

    location /protected/ {
        set $token "";
        if ($arg_token != "") {
            set $token $arg_token;
        }

        valid_referers none blocked server_names example.com www.example.com;
        if ($invalid_referer) {
            return 403;
        }

        # 验证Token
        if ($token != "your_generated_token") {
            return 403;
        }

        # 其他配置,如代理、缓存等
    }
}

3. 注意事项

通过以上配置,你可以有效地实现Nginx的防盗链功能,保护你的资源不被未经授权的用户访问。

0
看了该问题的人还看了