• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Nginx配置防盗链保护静态资源的详细教程

    发布者: 晋3555 | 发布时间: 2025-8-16 15:24| 查看数: 30| 评论数: 0|帖子模式

    1. 防盗链的原理

    防盗链通过检查 HTTP 请求头中的
    1. Referer
    复制代码
    字段来判断请求来源:

    • 如果请求来源是允许的域名,Nginx 会正常返回资源。
    • 如果请求来源是未授权的域名(或者没有
      1. Referer
      复制代码
      字段),Nginx 会拒绝请求(返回 403 错误)。
    常见场景:

    • 保护图片、视频等静态资源不被其他网站直接引用。
    • 限制文件下载资源只能通过特定页面访问。

    2. 配置步骤


    (1) 编辑 Nginx 配置文件

    打开 Nginx 配置文件:
    1. vim /usr/local/nginx/conf/nginx.conf
    复制代码
    1. server
    复制代码
    块中添加以下内容:
    1. location ~* \.(gif|jpg|jpeg|png|bmp|ico)$ {
    2.     valid_referers none blocked yourdomain.com *.yourdomain.com;
    3.     if ($invalid_referer) {
    4.         return 403;
    5.     }
    6. }
    复制代码

    配置说明:

      1. location ~* \.(gif|jpg|jpeg|png|bmp|ico)$
      复制代码


      • 匹配图片文件的扩展名(如
        1. .gif
        复制代码
        1. .jpg
        复制代码
        等)。
        1. ~*
        复制代码
        表示正则表达式匹配,并且忽略大小写。

    1. valid_referers none blocked yourdomain.com *.yourdomain.com;:
    复制代码



        1. none
        复制代码
        :允许没有
        1. Referer
        复制代码
        字段的请求(如直接输入 URL 的访问)。
        1. blocked
        复制代码
        :允许被代理或防火墙隐藏了
        1. Referer
        复制代码
        的请求。
        1. yourdomain.com
        复制代码
        :允许来自
        1. yourdomain.com
        复制代码
        的请求。
        1. *.yourdomain.com
        复制代码
        :允许来自
        1. yourdomain.com
        复制代码
        的所有子域名的请求。

    1. if ($invalid_referer)
    复制代码


    • 如果请求的来源不符合
      1. valid_referers
      复制代码
      的规则,则变量
      1. $invalid_referer
      复制代码
      1. true
      复制代码

      1. return 403;
      复制代码


      • 返回 HTTP 状态码 403(禁止访问)。


    (2) 测试配置文件语法

    在保存配置文件后,测试配置是否正确:
    1. nginx -t
    复制代码
    预期输出:
    1. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    2. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    复制代码
    如果有错误,检查配置文件中的语法问题并修复。

    (3) 重启 Nginx 服务

    重启 Nginx 使配置生效:
    1. systemctl restart nginx
    复制代码
    3. 创建一个简单的测试图片

    即使你的网页没有图片资源,你可以手动添加一个测试图片文件到 Nginx 的根目录,方便验证防盗链功能。

    步骤


    • 创建一个测试图片文件: 在 Nginx 的根目录下(通常是
      1. /usr/share/nginx/html/
      复制代码
      1. /var/www/html/
      复制代码
      ),创建一个简单的图片文件:
    1. echo "Test Image" > /usr/share/nginx/html/test.jpg
    复制代码

    • 访问测试图片:

      • 在浏览器中输入图片的 URL(如
        1. http://yourdomain.com/test.jpg
        复制代码
        )。
      • 确保图片可以被正常访问。

    • 从其他来源测试引用:

      • 在其他域名的网页中嵌入这个图片:

    1. <img src="http://yourdomain.com/test.jpg" />
    复制代码

    • 或者用
      1. curl
      复制代码
      模拟请求:
    1. curl -e "http://otherdomain.com" http://yourdomain.com/test.jpg
    2. //Nginx 应该返回 403 错误。

    3. curl -e "http://smqnz.com" 192.168.14.111/123.png
    4. //可以访问
    复制代码
    如果配置正确,


    总结:

    通过配置防盗链,可以有效保护网站的静态资源,防止带宽被恶意消耗。在实际应用中,可以根据业务需求调整匹配规则和允许的域名,进一步优化配置。
    以上就是Nginx配置防盗链保护静态资源的详细教程的详细内容,更多关于Nginx配置防盗链的资料请关注脚本之家其它相关文章!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表