首页 > 系统相关 >NGINX_十一 nginx 防盗链问题

NGINX_十一 nginx 防盗链问题

时间:2024-06-22 09:30:29浏览次数:12  
标签:10.0 http nginx root server NGINX com 防盗链

十一 nginx 防盗链问题

两个网站 A 和 B, A网站引用了B网站上的图片,这种行为就叫做盗链。 防盗链,就是要防止A引用B的图片。

1、nginx 防止网站资源被盗用模块

ngx_http_referer_module

如何区分哪些是不正常的用户?

​ HTTP Referer是Header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理,例如防止未经允许的网站盗链图片、文件等。 因此HTTP Referer头信息是可以通过程序来伪装生成的,所以通过Referer信息防盗链并非100%可靠,但是,它能够限制大部分的盗链情况.

比如在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:Referer=http://www.google.com

2、防盗链配置

配置要点:

[root@nginx-server ~]# vim /etc/nginx/nginx.conf
# 日志格式添加"$http_referer"
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                         '$status $body_bytes_sent "$http_referer" '
                         '"$http_user_agent" "$http_x_forwarded_for"';
# valid_referers 使用方式                         
Syntax: 	valid_referers none | blocked | server_names | string ...;
Default: 	—
Context: server, location
  • none : 允许没有http_refer的请求访问资源;

  • blocked : 允许不是http://开头的,不带协议的请求访问资源;

  • server_names : 只允许指定ip/域名来的请求访问资源(白名单);

    准备两台机器,两张图片(缓存问题)

    配置nginx配置文件,并上传图片
    [root@nginx-server html]# vim /etc/nginx/conf.d/nginx.conf
    server {
        listen       80;
        server_name  localhost;
    
        location / {
             root   /usr/share/nginx/html;
             index  index.html index.htm;
    
             valid_referers none blocked *.qf.com 10.0.105.202;
                    if ($invalid_referer) {
                       return 502;
                    }
            }
        location ~  .*\.(gif|jpg|png|jpeg)$ {
             root  /usr/share/nginx/html;
    
             valid_referers  qf.com 10.0.105.202;
                    if ($invalid_referer) {
                       return 403;
                    }
            }
    }
    
    重载nginx服务
    [root@nginx-server ~]# nginx -s reload -c /etc/nginx/nginx.conf
    
    
    第二台机器客户端
    配置nginx访问页面
    创建页面
    [root@nginx-server nginx]# vim index.html
    <html>
    <head>
        <meta charset="utf-8">
        <title>qf.com</title>
    </head>
    <body style="background-color:red;">
        <img src="http://10.0.105.202/test.jpg"/>
    </body>
    </html>
    
    测试不带http_refer:
    [root@nginx-server nginx]# curl -I "http://10.0.105.202/test1.png"
    HTTP/1.1 200 OK
    Server: nginx/1.16.0
    Date: Thu, 27 Jun 2019 16:21:13 GMT
    Content-Type: image/png
    Content-Length: 235283
    Last-Modified: Thu, 27 Jun 2019 11:27:11 GMT
    Connection: keep-alive
    ETag: "5d14a80f-39713"
    Accept-Ranges: bytes
    
    测试带非法http_refer:
    [root@nginx-server nginx]# curl -e http://www.baidu.com -I "http://10.0.105.202/test.jpg"
    HTTP/1.1 403 Forbidden
    Server: nginx/1.16.0
    Date: Thu, 27 Jun 2019 16:22:32 GMT
    Content-Type: text/html
    Content-Length: 153
    Connection: keep-alive
    
    测试带合法的http_refer:
    [root@nginx-server nginx]# curl -e http://10.0.105.202 -I "http://10.0.105.202/test.jpg"
    HTTP/1.1 200 OK
    Server: nginx/1.16.0
    Date: Thu, 27 Jun 2019 16:23:21 GMT
    Content-Type: image/jpeg
    Content-Length: 27961
    Last-Modified: Thu, 27 Jun 2019 12:28:51 GMT
    Connection: keep-alive
    ETag: "5d14b683-6d39"
    Accept-Ranges: bytes
    
    

3、其他配置

3.1、匹配域名

#    location ~  .*\.(gif|jpg|png|jpeg)$ {
#        root  /usr/share/nginx/html;

#         valid_referers none blocked qf.com 10.0.105.202;
#               if ($invalid_referer) {
#                  return 403;
#               }
#       }
    location ~ .*\.(gif|jpg|png|jpeg)$ {
        root  /usr/share/nginx/html;

        valid_referers 10.0.105.202 *.baidu.com *.google.com;
                if ($invalid_referer) {
                rewrite ^/ http://10.0.105.202/test.jpg;
                #return 403;
                }
        }

以上所有来自 qf.com 和域名中google和baidu的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合none这个规则。

标签:10.0,http,nginx,root,server,NGINX,com,防盗链
From: https://blog.csdn.net/bozuris/article/details/139825525

相关文章

  • Nginx部署(详细)
     1.概念百度百科:Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式......
  • Linux系统之配置Nginx反向代理
    Linux系统之配置Nginx反向代理一、Nginx介绍1.1Nginx简介1.2Nginx反向代理二、本次实践介绍2.1本次实践简介2.2本次实践环境规划三、基于端口配置反向代理3.1安装nginx软件3.2备份配置文件3.3编辑nginx配置文件3.4启动Nginx服务3.5检查Ng......
  • nginx篇章
    一、基础安装1、安装依赖yum-yinstallgccgcc-c++zlibzlib-developensslopenssl-develpcre*glibc-devel.x86_642、下载安装包下载地址https://nginx.org/3、解压修改,屏蔽版本号(实际使用中,经常会被漏扫,只要又版本号泄露,都会让整改)tar-zxvfnginx-1.23.4.tar.gz注:我使用......
  • Nginx 反向代理 (泛域名->泛域名,https,静态文件)
    Nginx反向代理配置指南(泛域名->泛域名,HTTPS,静态文件)完整版server{#监听80端口listen80;listen443sslhttp2;; #...... #泛域名server_name*.{fromName}.com;#获取"*"参数set$subdm'';if($host~*"(.*......
  • nginx精准禁止特定国家或者地区IP访问
    1、安装依赖dnf-yinstallgcc-c++libtoolgd-develpcrepcre-developensslopenssl-develzlibzlib-devellibmaxminddb-develpcre-develzlib-develgccgcc-c++makegit2、获取NGINX安装包并安装wgethttps://nginx.org/download/nginx-1.26.1.tar.gzgitclo......
  • Nginx部署Vue前端项目,部署多个Vue项目
    参考:https://blog.csdn.net/qq_33454884/article/details/89212702启动闪退:https://blog.csdn.net/weixin_66383346/article/details/1326221561.下载安装nginx 下载地址:https://nginx.org/en/download.html  windows版:nginx/Windows-1.27.0解压后必须放在没有中文,没有空格......
  • Nginx流量控制
    目录1、Nginx如何限流2、配置基本的限流3、处理突发4、无延迟的排队5、高级配置示例1、白名单2、location包含多limit_req指令6、配置流量控制相关功能1、配置日志记录2、发送到客户端的错误代码7、nginx流量控制总结 流量限制(rate-limiting),是Nginx中一个......
  • 【调试笔记-20240617-Linux- frp 结合 nginx 实现内网网站在公网发布】
    调试笔记-系列文章目录调试笔记-20240617-Linux-frp结合nginx实现内网网站在公网发布文章目录调试笔记-系列文章目录调试笔记-20240617-Linux-frp结合nginx实现内网网站在公网发布前言一、调试环境操作系统:Windows10专业版调试环境调试目标二、调试步骤公......
  • CentOS7系统搭建web环境 php&nginx&pgsql
    环境:VMware、CentOS-7-x86_64-DVD-2009.iso、nginx-1.26.1、php-7.2.0、postgresql-12php最好安装对应php项目所需版本,否则会出现不兼容问题。一、VMware安装CentOS7操作系统下载LinuxCentos7映像:https://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.......
  • IIS10 资源增加防盗链
      为了让资源不被缓存,响应头可对【资源目录】增加 重写模块增加指定格式的文件重写功能<system.webServer><rewrite><rules><rulename="Preventhotlinking"><matchurl="^.*\.(rar|zip)$"ignoreCase="true"/><conditions>&......