Nginx之防盗链及高可用解读

简介: Nginx之防盗链及高可用解读

防盗链解读

盗链是什么?

网页的加载顺序是先加载HTML相关的内容,然后解析HTML的内容,那些需要加载图片,那些需要加载文件,是逐步加载的,对于我们线上的图片等静态资源,经常会被其他网站盗用,外面可以我们请求到一个页面后,这个页面一般会再去请求其中的静态资源,这时候请求头中,会有一个refer字段,表示当前这个请求的来源,我们可以限制指定来源的请求才返回,否则就不返回,这样可以防止资源被盗用。

Referer理解

       HTTP 协议中有一个用来表示“页面或资源”来源的“请求头”,这个请求头叫做 Referer --> Referer是表示请求是从哪个网址发出的

       防盗链功能基于HTTP协议支持的 Referer 机制,通过Referer跟踪来源,对来源进行识别和判断

Nginx中配置防盗链

valid_referers none|server_name

设置有效的refer值

  • none:检测地址没有refer,则有效
  • server_name:检测主机地址,refer显示是从这个地址来的,则有效(server_name必须是完整的http://xxxx

注意:if ($invalid_referer)中if后有个空格,不写就会报错

nginx: [emerg] unknown directive "if($invalid_referer)" in 
/usr/local/nginx/conf/nginx.conf:27

这里设置nginx服务器中的img目录下的图片必须refer为http:192.168.174/134才能访问

server {
        listen       80;
        server_name  localhost;
        location / { 
            proxy_pass http://xxx;
        }
        location /img{
                valid_referers http:192.168.174/134;
                if ($invalid_referer){#无效的
                        return 403;#返回状态码403
                }
                root html;
                index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
  • 如果引用这张图片的页面且对应refer并没有被设置,图片无法加载出来
  • 如果直接访问图片地址,因为没有refer字段指向来源,会直接显示Nginx的页面

使用 curl 测试防盗链

1.# 安装 curl 命令
yum -y install curl
2.# 测试,在 103 机器中访问 101
curl -I http://192.168.44.101/img/logo.png
-I:不带 Referer ,只是给我们返回响应的一些头信息。
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png
-e:"http://baidu.com" 为 Referer,返回响应的一些头信息

设置盗链图片

将提示图片放在html/img/x.png,访问设置防盗链图片时,就返回这x.png张图

location /img{
                valid_referers http:192.168.174/134;
                if ($invalid_referer){#无效的
                     rewrite ^/  /img/x.png break;
                }
                root html;
                index  index.html index.htm;
}

高可用解读

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间

Nginx的高可用指的是在一台Nginx宕机的情况下有其他Nginx去处理请求。

Keepalived

  • Keepalived是Linux下一个轻量级别的高可用解决方案,通过虚拟路由冗余协议来实现服务或者网络的高可用
  • 起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态
  • 如果某个服务器节点出现故障,Keepalived将检测到后自动将节点从集群系统中剔除
  • 而在故障节点恢复正常后,Keepalived又可以自动将此节点重新加入集群中
  • 这些工作自动完成,不需要人工干预,需要人工完成的只是修复出现故障的节点

如果 nginx master 出现宕机,keepalived则会将服务切到 nginx slave上,保证业务不受影响,这样就可以避免 nginx 单机故障问题,以此来实现高可用

Nginx中配置高可用

安装keepalived

yum install -y keepalived

修改keepalived配置

  • 配置文件在/etc/keepalived/keepalived.conf
  • vrrp_instanceauthenticationvirtual_router_idvirtual_ipaddress这几个一样的机器,才算是同一个组里。这个组才会选出一个作为Master机器

这里我们设置两台机器,分别下载好keepalived,然后进行配置

机器一:

! Configuration File for keepalived
global_defs {
   router_id lb1 # 名字与其他配置了keepalive的机器不重复就行
}
vrrp_instance heyingjie {#vrrp实例名可以随意取
    state MASTER #只能有一个默认的Master,其他写BACKUP
    interface ens33 # ip addr查看下网卡名,默认时ens33
    virtual_router_id 51
    priority 100 # 多台安装了keepalived的机器竞争成为Master的优先级
    advert_int 1 #通信时间
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16 #虚拟IP
    }
}

机器二:

! Configuration File for keepalived
global_defs {
   router_id lb2 
}
vrrp_instance heyingjie {
    state BACKUP #只能有一个默认的Master,其他写BACKUP
    interface ens33 
    virtual_router_id 51
    priority 50
    advert_int 1 
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16 #虚拟IP
    }
}

通过命令ip addr查看机器一的ip信息,可以看到虚拟IP


相关文章
|
7月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
消息中间件 缓存 应用服务中间件
Nginx系列教程(02) - 高可用与高并发介绍
Nginx系列教程(02) - 高可用与高并发介绍
120 0
|
应用服务中间件 nginx
nginx防盗链功能
nginx防盗链功能
|
4月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
125 0
|
4月前
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
73 1
|
5月前
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
154 1
|
7月前
|
监控 负载均衡 应用服务中间件
Keepalive 解决nginx 的高可用问题
Keepalive 解决nginx 的高可用问题
|
6月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
7月前
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
91 2
|
7月前
|
缓存 应用服务中间件 网络安全
nginx 重写功能,防盗链功能 介绍
nginx 重写功能,防盗链功能 介绍