Nginx之防盗链及高可用解读

2023-09-22 07:43:22

目录

防盗链解读

盗链是什么?

 Nginx中配置防盗链

高可用解读 

Keepalived

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

image-20220503175414858

更多推荐

洛谷刷题入门篇:顺序结构

链接如下:https://www.luogu.com.cn/training/100#problems一、Hello,World!题目链接:https://www.luogu.com.cn/problem/B2002题目描述编写一个能够输出Hello,World!的程序。提示:使用英文标点符号;Hello,World!

华为OD机考算法题:垃圾信息拦截

目录题目部分解读与分析代码实现题目部分题目垃圾信息拦截难度难题目说明大众对垃圾短信深恶痛绝,希望能对垃圾短信发送者进行识别,为此,很多软件增加了垃圾短信识别机制。经分析,发现正常用户的短信通常具备交互性,而垃圾短信往往都是大量单向的短信,按照如下规则进行垃圾短信识别:本题中,发送者A符合以下条件之一的,则认为A是垃圾短

SVN的基本使用

一、SVN介绍SVN(Subversion)是一个开源的版本控制系统,它专门用于管理文件和目录的变更。SVN提供了一种集中式的版本控制方案,其中有一个中央仓库存储所有文件的历史记录和变更。SVN使用方式相对简单,可以通过命令工具或可视化客户端进行操作,下面主要是SVN客户端的操作方式二、安装客户端软件进入官网下载tor

基于 MATLAB 的电力系统动态分析研究【IEEE9、IEEE68系节点】

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果2.1IEEE9节点2.2IEEE68节点🎉3参考文献🌈4Matlab代码、数据、文章💥1概述

什么是云计算中的资源调度,解释资源调度的挑战和算法

1、什么是云计算中的资源调度,解释资源调度的挑战和算法。在云计算中,资源调度(ResourceScheduling)指的是如何在不同类型的资源(例如计算资源、存储资源、网络资源等)之间合理地分配和调度资源,以实现高效的资源管理和任务执行。资源调度的目标是提高系统的可用性、可靠性和性能。然而,资源调度面临着一些挑战。首先

敏捷开发工具:提升软件研发效率的重要利器

在当今的软件开发领域,敏捷开发方法越来越受到推崇。敏捷开发的核心是灵活应对需求变化,以快速迭代的方式不断优化产品。为了助力敏捷开发的实施,各种敏捷开发工具应运而生。本文将介绍几种常用的敏捷开发工具,阐述其特点、应用场景及优缺点,最后对敏捷开发工具的重要性进行总结。一、敏捷开发工具介绍Leangoo领歌:Leangoo领

什么是Selenium?使用Selenium进行自动化测试!

你知道什么是Selenium吗?你知道为什么要使用它吗?答案就在本文中,很高兴能够与你共飧。自动化测试正席卷全球,Selenium认证是业界最抢手的技能之一。什么是Selenium?Selenium是一种开源工具,用于在Web浏览器上执行自动化测试(使用任何Web浏览器进行Web应用程序测试)。等等,先别激动,让我再次

【详细图文】Windows下安装RustRover和配置Rust环境

前言Rust已经火了挺长时间了,连微软的Windows内核都用它来重新改写,可想而知其厉害之处。之前有看过Rust的教程,但一直没有去尝试。今天看到JetBrains出了Rust专用的IDE:RustRover。作为JetBrains的粉丝,决定进行一次部署实践。本文是从工具安装和环境部署到HelloWorld,作为一

kubernetes popeye 巡检

文章目录1.简介2.安装3.本地4.容器1.简介Popeye是一个实用程序,可以扫描实时Kubernetes集群,并报告部署的资源和配置的潜在问题。它根据部署的内容而不是磁盘上的内容来清理集群。通过扫描您的集群,它可以检测错误配置,并帮助您确保最佳实践到位,从而防止未来的麻烦。它旨在减少在野外操作Kubernetes集

搭建Android自动化python+appium环境

一.需要软件JDK:JAVA安装后配置JDK环境SDK:SDK下载后配置adb环境Python:pyhton语言Pycharm:python脚本编译工具Appium-python-client:pyhton中的库Appium客户端二.搭建步骤1.配置JDK环境①.下载安装java:https://www.oracle.

解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制

一、引言癌症是全球范围内健康领域的一大挑战,早期预测和诊断对于提高治疗效果和生存率至关重要。机器学习在癌症预测中发挥了重要作用,可以从临床数据中学习并构建癌症预测模型,帮助医生进行早期检测和干预,提高患者的生活质量和预后结果。然而,机器学习模型的黑盒性质限制了其在临床实践中的应用。可解释的机器学习被广泛关注,它不仅能够

热文推荐