商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何通过nginx配置实现防盗链

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

  发布于2026-07-29 阅读(0)

扫一扫,手机访问

通过Nginx配置防盗链,说白了就是给资源加一把锁,让别人没法随便拿走你的图片、视频或文件。下面直接上干货,从基础到高级,一步步说清楚怎么配置。

1. 基本防盗链配置

1.1 允许特定域名访问

最简单的做法是只让某些域名能访问你的资源,其他域名一律拒绝。比如,你只希望自己的主站和子站能用,别人想直接引用,直接返回403。

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 允许特定文件类型

如果你只想保护图片、视频这类多媒体文件,可以按文件类型来限制。比如只允许图片(jpg、png、gif)和视频(mp4、avi、mov)被特定域名引用,其他文件类型不受影响。

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 使用签名验证

如果referer策略不够用,可以上更严格的签名验证。思路是:你生成一个签名,请求时带上这个签名,服务器端校验。签名不对,直接拒绝。这样就算别人伪造了referer也绕不过去。

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. 注意事项

  • 性能影响:复杂的防盗链逻辑(比如签名验证、Token验证)会增加Nginx的CPU开销,高并发场景下尤其明显。如果只是简单防扒,用referer就够了。
  • 安全性:签名和Token的生成算法一定要保密,别用简单的md5拼接,最好加盐、加时间戳,防止被暴力破解。
  • 灵活性:实际场景中,你可能需要允许某些特定的子域名,或者给CDN节点白名单。记得根据实际需求调整valid_referers的规则。

通过以上配置,Nginx的防盗链功能就能跑起来了,资源不会轻易被别人白嫖。记住一点:没有绝对安全的防盗链,但多一层防护,就多一分安心。

本文转载于:https://www.yisu.com/ask/52039865.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注