当前位置: 首页 > news >正文

安全基础第十一天:nginx

目 录

一、nginx的反向代理

1.反向代理原理

2.反向代理的几种算法

(1)轮询(默认) 

(2)weight 

(3)ip_hash 

(4)fair(第三方) 

(5)url_hash(第三方)

(6)least_conn  

3.配置

(1)给centos和ubuntu下载配置安装nginx

(2)在centos下进入到/usr/local/nginx/conf/

(3)编辑nginx.conf文本,编辑内容如下

(4)进入到Ubuntu的/usr/local/nginx/html

(5)编辑index.html,内容如下

(6)进入到windows,编辑index.html如下

(7)启动centos和ubuntu的nginx

(8)在windows上启用小皮面板

(9)查看启动状态

(10)在物理机进行访问centos:192.168.191.129

二、nginx的高可用

1.原理

2.实验搭建

(1)下载keepalive压缩包(keepalive下载网址)

 (2)解压缩包

 (3)将解压的文件移动到我们/usr/local下

 (4)构建编译环境并且安装

(5)进入到/usr/local/etc/keepalived/下

(6)编辑一个 keepalived.conf文本,编辑以下内容

(7)创建nginx重启脚本check_nginx_pid.sh编辑以下内容

(8)给check_nginx_pid.sh增加一个可执行的权限:

(9)由于安装keepalived时,是自定义的安装位置,因此需要拷贝一些文件到系统目录中

(10)启动keepalive服务

(11)检查是否keepalive是都启动成功

(12)另外一台主机作为备,操作和上述一样,唯一一点在配置keepalived.conf不同,备份配置如下:

(13)启动主备服务器的nginx和keepalive

(14)测试


一、nginx的反向代理

1.反向代理原理

        就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。

2.反向代理的几种算法

(1)轮询(默认) 

  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动删除。 

(2)weight 

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 

(3)ip_hash 

 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session 保持的问题。  

(4)fair(第三方) 

可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配,Nginx本身默认是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

(5)url_hash(第三方)

 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率,Nginx本身默认是不支持url_hash的,如果需要这种高度算法,必须安装Nginx的hash软件包。

(6)least_conn 
 

 根据后端服务器的连接状况进行分配客户请求,连接最少的服务器将被有限分配客户端请求。

3.配置

centos作为反向代理服务器(192.168.191.129)

ubuntu(192.168.191.128)和windows10(192.168.191.134)作为被代理的服务器)

(1)给centos和ubuntu下载配置安装nginx

(2)在centos下进入到/usr/local/nginx/conf/

cd /usr/local/nginx/conf

(3)编辑nginx.conf文本,编辑内容如下

    upstream nginx_html{
   # 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2
    server 192.168.191.128 weight=100 max_fails=2 fail_timeout=30s;
    server 192.168.191.134 weight=200 max_fails=2 fail_timeout=30s;
    # 这里的IP请配置成你WEB服务所在的机器IP
     }

(4)进入到Ubuntu的/usr/local/nginx/html

cd /usr/local/nginx/html

(5)编辑index.html,内容如下

ubuntu 192.168.191.128

(6)进入到windows,编辑index.html如下

Windows 192.168.191.134

(7)启动centos和ubuntu的nginx

cd /usr/local/nginx/sbin

./nginx 

(8)在windows上启用小皮面板

(9)查看启动状态

ps -ef | grep nginx

(10)在物理机进行访问centos:192.168.191.129

 

二、nginx的高可用

1.原理

        两台设备分为主备,并且主备都需要安装nginx和keepalive(原理是心跳检测),在主备上面分别连接两台服务器,当主设备挂掉后,备用设备可以正常的去使用。

2.实验搭建

(1)下载keepalive压缩包(keepalive下载网址)

wget https://keepalived.org/software/keepalived-2.2.7.tar.gz

 (2)解压缩包

 tar -zvxf keepalived-2.2.7.tar.gz

 

 (3)将解压的文件移动到我们/usr/local下

mv keepalive /usr/local/

 (4)构建编译环境并且安装

./configure

make && make install

 

(5)进入到/usr/local/etc/keepalived/下

cd  /usr/local/etc/keepalived/

(6)编辑一个 keepalived.conf文本,编辑以下内容

global_defs {
    # 自带的邮件提醒服务,建议用独立的监控或第三方SMTP,也可选择配置邮件发送。
    notification_email {
        root@localhost
    }
    notification_email_from root@localhost
    smtp_server localhost
    smtp_connect_timeout 30
    # 高可用集群主机身份标识(集群中主机身份标识名称不能重复,建议配置成本机IP)
    router_id 192.168.191.129

}

# 定时运行的脚本文件配置
vrrp_script check_nginx_pid_restart {
    # 之前编写的nginx重启脚本的所在位置
    script "check_nginx_pid.sh" 

    # 每间隔3秒执行一次
    interval 3
    # 如果脚本中的条件成立,重启一次则权重-20
    weight -20
}

# 定义虚拟路由,VI_1为虚拟路由的标示符(可自定义名称)
vrrp_instance VI_1 {
    # 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)
    state MASTER

    # 绑定虚拟IP的网络接口,根据自己的机器的网卡配置
    interface ens33 
    # 虚拟路由的ID号,主从两个节点设置必须一样
    virtual_router_id 240

    # 填写本机IP
    mcast_src_ip 192.168.191.129

    # 节点权重优先级,主节点要比从节点优先级高
    priority 100
    # 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题
    nopreempt
    # 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass jiege
    }
    # 将track_script块加入instance配置块
    track_script {
        # 执行Nginx监控的脚本
        check_nginx_pid_restart
    }

    virtual_ipaddress {
        # 虚拟IP(VIP),也可扩展,可配置多个。
        192.168.191.240

    }
}

(7)创建nginx重启脚本check_nginx_pid.sh编辑以下内容

#!/bin/sh
# 通过ps指令查询后台的nginx进程数,并将其保存在变量nginx_number中
nginx_number=`ps -C nginx --no-header | wc -l`
# 判断后台是否还有Nginx进程在运行
if [ $nginx_number -eq 0 ];then
    # 如果后台查询不到`Nginx`进程存在,则执行重启指令
    /soft/nginx/sbin/nginx -c /soft/nginx/conf/nginx.conf
    # 重启后等待1s后,再次查询后台进程数
    sleep 1
    # 如果重启后依旧无法查询到nginx进程
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        # 将keepalived主机下线,将虚拟IP漂移给从机,从机上线接管Nginx服务
        systemctl stop keepalived.service
    fi
fi

 

(8)给check_nginx_pid.sh增加一个可执行的权限:

chmod +x check_nginx_pid.sh

(9)由于安装keepalived时,是自定义的安装位置,因此需要拷贝一些文件到系统目录中

mkdir /etc/keepalived/

cp keepalived.conf /etc/keepalived/

cp init.d/keepalived /etc/init.d/

cp sysconfig/keepalived /etc/sysconfig/

 

(10)启动keepalive服务

systemctl restart keepalive.server 

(11)检查是否keepalive是都启动成功

ipaddr

(12)另外一台主机作为备,操作和上述一样,唯一一点在配置keepalived.conf不同,备份配置如下:

global_defs {
    # 自带的邮件提醒服务,建议用独立的监控或第三方SMTP,也可选择配置邮件发送。
    notification_email {
        root@localhost
    }
    notification_email_from root@localhost
    smtp_server localhost
    smtp_connect_timeout 30
    # 高可用集群主机身份标识(集群中主机身份标识名称不能重复,建议配置成本机IP)
    router_id 192.168.191.128 

}

# 定时运行的脚本文件配置
vrrp_script check_nginx_pid_restart {
    # 之前编写的nginx重启脚本的所在位置
    script "/soft/scripts/keepalived/check_nginx_pid_restart.sh" 
    # 每间隔3秒执行一次
    interval 3
    # 如果脚本中的条件成立,重启一次则权重-20
    weight -20
}

# 定义虚拟路由,VI_1为虚拟路由的标示符(可自定义名称)
vrrp_instance VI_1 {
    # 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)
    state BACKUP

    # 绑定虚拟IP的网络接口,根据自己的机器的网卡配置
    interface ens33 

    # 虚拟路由的ID号,主从两个节点设置必须一样
    virtual_router_id 240

    # 填写本机IP
    mcast_src_ip 192.168.191.128
    # 节点权重优先级,主节点要比从节点优先级高
    priority 90
    # 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题
    nopreempt

    # 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass jiege
    }
    # 将track_script块加入instance配置块
    track_script {
        # 执行Nginx监控的脚本
        check_nginx_pid_restart
    }

    virtual_ipaddress {
        # 虚拟IP(VIP),也可扩展,可配置多个。
        192.168.191.240

    }
}

(13)启动主备服务器的nginx和keepalive

(14)测试

        我们在物理机浏览器输入虚拟ip,我们访问的主服务器,我们多刷新几次,依旧是,当我们关闭主nginx,刷新页面就会跳转到我们的备服务器。

相关文章:

安全基础第十一天:nginx

目 录 一、nginx的反向代理 1.反向代理原理 2.反向代理的几种算法 (1)轮询(默认) (2)weight (3)ip_hash (4)fair(第三方) …...

设计模式之【命令模式】,方法调用的花式玩法

文章目录 一、什么是命令模式1、命令模式使用场景2、命令模式的主要角色3、命令模式优缺点4、命令模式注意事项及细节 二、使用示例1、命令模式的一般写法2、播放器功能案例3、遥控器案例 三、源码中的命令模式1、Thread 一、什么是命令模式 命令模式(Command Patt…...

企业需要专业电子邮件地址的4大原因

专业的企业电子邮件地址具有贵公司的自定义域名,而不是通用的Zoho Mail 、gmail或yahoo帐户,例如:john stargardening.com 大多数初学者使用不带域名的通用免费企业电子邮件帐户,这不是很专业。例如:zhangsan2022zoho.…...

国民游戏王者荣耀的真实地图开发之路

👉腾小云导读 相信很多人都玩过王者荣耀,大家在欣赏其华丽的游戏界面以及炫酷的游戏技能时,是否好奇过王者荣耀的地图是怎样开发出来的?在开发的历程中,都有哪些问题?是怎样解决的?本文将从其地…...

浅谈IDC数据中心综合布线第二篇——结构化布线

数据中心网络在当今的业务中扮演着越来越重要的作用,提供数据的存储、管理、共享、交换、应用等功能。在数据中心中,大量的数据在服务器、交换机、存储设备之间通过物理层的光缆(仅讨论光纤布线)进行传输。数据表明,在…...

电脑格式化后数据恢复软件EasyRecovery16

EasyRecovery是一款由Kroll Ontrack公司开发的专业数据恢复软件,旨在帮助用户从各种数据丢失情况下恢复文件。无论是因为误删除、格式化、分区丢失、系统崩溃还是其他原因导致的数据丢失,EasyRecovery都具有强大的恢复功能。 EasyRecovery提供了多种恢复…...

(2020)End-to-end Neural Coreference Resolution论文笔记

2020End-to-end Neural Coreference Resolution论文笔记 Abstract1 Introduction2 Related Work3 Task4 Model4.1 Scoring Architecture4.2 Span Representations5 Inference6 Learning7 Experiments7.1 HyperparametersWord representationsHidden dimensionsFeature encoding…...

kafka命令

查询kafka版本信息 kafka-configs.sh --describe --bootstrap-server localhost:9092 --version 查看所有topic [rootm10 bin]# kafka-topics.sh --list --zookeeper localhost:2181 __consumer_offsets kahn-topic-1 my_topic x_topic-1 创建一个topic,名为x_top…...

mybatis多表查询

多表查询有哪些情况 Mybatis 支持多表查询,常见的多表查询方式包括使用嵌套查询和关联查询 嵌套查询 嵌套查询是指在 SQL 语句中嵌套另外一个查询语句,可以用于在一个表中查询与另一表相关的数据。例如,在一个订单表中同时需要查询该订单所属…...

kafka 从入门到精通

kafka 安装 zookeeper模式 创建软件目录 mkdir /opt/soft cd /opt/soft下载 wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz解压 tar -zxvf kafka_2.13-3.4.0.tgz 修改目录名称 mv kafka_2.13-3.4.0 kafka配置环境变量 vim /etc/profileexport K…...

写PPT没有思路, 这些底层方法论让你灵感爆棚……

作为一个10年经验的策划人,以下是个人多年经验,看完绝对对你写PPT会有很大帮助! 首先,有很多新手写PPT有一个不好的习惯,就是喜欢直接上手就打开PPT开始啪啪啪打字。 这是非常错误的,这就等于你是想到哪写…...

【小沐学Python】Python实现Web服务器(Flask+Vue+node.js,web单页增删改查)

文章目录 1、简介1.1 flask1.2 vue 2、开发2.1 新建flask项目2.2 安装flask库2.3 新建flask的主脚本2.4 新建Vue项目2.5 安装vue项目依赖项2.6 新增组件Ping.vue2.7 Ping.vue增加HTTP请求2.8 美化vue前端页面2.9 新增组件Books.vue2.10 flask增加路由Books2.11 Books.vue增加HT…...

甘肃非煤矿山电子封条 智慧矿山 opencv

甘肃非煤矿山电子封条 智慧煤矿接入国家矿山安全平台是通过pythonopencv网络模型,甘肃非煤矿山电子封条pythonopencv网络模型对关键位置(回风井口、运人井口、车辆出入口)对现场人员行为、数量、穿戴着装及设备状态各数据进行实时监控分析。p…...

工业识别与定位系统源码解决方案

工厂人员定位系统源码,工业领域定位系统源码 近年来人员定位系统在工业领域的发展势头迅猛,工业识别与定位成为促进制造业数字化的关键技术。通过实时定位可以判断所有的人、物、车的位置。实时定位系统要适用于复杂工业环境,单一技术是很难…...

PCL学习之滤波算法

前言 点云滤波作为常见的点云处理算法,一般是点云处理的第一步,对后续处理有很重要作用。滤波 有很多方面也有很多种功能,比如去除噪声点、离群点、点云平滑以及空洞、数据压缩等 原始点云数据往往包含大量散列点、孤立点,在获取…...

第二章 链表

目录 一、移除链表元素二、设计链表三、反转链表四、两两交换链表中的节点五、删除链表倒数第N个节点六、链表相交七、环形链表Ⅱ 一、移除链表元素 Leetcode 203 class Solution { public:ListNode* removeElements(ListNode* head, int val) {ListNode* dummyHead new Lis…...

Spring Security OAuth2实现单点登录:简化多个系统之间的登录流程

Spring Security OAuth2实现单点登录:简化多个系统之间的登录流程 一、介绍OAuth21. OAuth2的定义和作用2. OAuth2的优点和使用场景 二、Spring Security1. Spring Security的介绍2. Spring Security的特点和优势 三、OAuth2与Spring Security的结合1. OAuth2在Spri…...

语义分析器

语义分析器(Semantic Analyzer)是编译器中的一个重要组成部分,它负责对源代码进行语义分析,检查源代码是否符合语义规范,并进行错误处理和类型推导等操作。 举个例子,假设有以下的源代码: int…...

爬虫基本原理

爬虫基本原理 1.1获取网页1.1.1提取信息1.1.2保存数据 1.2请求1.2.1 请求方法1.2.2 请求网址1.2.3 请求头1.2.4请求体1.3响应 1.1获取网页 爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码。源代码里包含了网页的部分有用信息,所以只要把源代…...

常见电子元器件和电路

目录 常见电子元器件一览表(字母标志)NTC(负温度系数热敏电阻)压敏电阻X2电容(抑制电源电磁干扰用电容器)泄放电阻共模电压共模电感整流桥滤波电容RCD吸收二极管Y电容整流器的原理输出整流肖特基二极管 功率晶体管(GTR,三极管)双极型晶体管(BJT&#xff…...

利用Pandas AI完成Excel大模型的结合实现自然语言问数

需求说明 实现对Excel工具的自然语言问数,即可以通过界面上传Excel文件,然后在文本框里通过语言对话的形式问出要统计的内容。比如: 用户数有多少? 语文成绩低于90的用户有多少? ..... 实现思路 Pandas AI是基于…...

行为型设计模式之Mediator(中介者)

行为型设计模式之Mediator(中介者) 1)意图 用一个中介对象来封装一系列的对象的交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 2)结构 其中&#xff…...

Oracle业务用户的存储过程个数及行数统计

Oracle业务用户的存储过程个数及行数统计 统计所有业务用户存储过程的个数独立定义的存储过程定义在包里的存储过程统计所有业务用户存储过程的总行数独立定义的存储过程定义在包里的存储过程📖 对存储过程进行统计主要用到以下三个系统视图: dba_objects:记录了所有独立创…...

嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析

第一部分 移除挂起等待列表中的任务 while( listLIST_IS_EMPTY( &xPendingReadyList ) pdFALSE )//循环寻找直到为空,把全部任务扫描一遍 { pxTCB ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingR…...

华为手机开机卡在Huawei界面不动怎么办?

遇到华为手机卡在启动界面(如HUAWEI Logo界面)的情况,可依次尝试以下解决方案,按操作复杂度和风险由低到高排序: 🔧 一、强制重启(优先尝试) 1.通用方法‌ 长按 ‌电源键 音量下键‌…...

iOS 门店营收表格功能的实现

iOS 门店营收表格功能实现方案 核心功能需求 数据展示:表格形式展示门店/日期维度的营收数据排序功能:支持按营收金额、增长率等排序筛选功能:按日期范围/门店/区域筛选交互操作:点击查看详情、数据刷新数据可视化:关…...

超大规模芯片验证:基于AMD VP1902的S8-100原型验证系统实测性能翻倍

引言&#xff1a; 随着AI、HPC及超大规模芯片设计需求呈指数级增长原型验证平台已成为芯片设计流程中验证复杂架构、缩短迭代周期的核心工具。然而&#xff0c;传统原型验证系统受限于单芯片容量&#xff08;通常<5000万门&#xff09;、多芯片分割效率及系统级联能力&#…...

设计模式基础概念(行为模式):模板方法模式 (Template Method)

概述 模板方法模式是一种行为设计模式&#xff0c; 它在超类中定义了一个算法的框架&#xff0c; 允许子类在不修改结构的情况下重写算法的特定步骤。 是基于继承的代码复用的基本技术&#xff0c;模板方法模式的类结构图中&#xff0c;只有继承关系。 需要开发抽象类和具体子…...

Ubuntu 下开机自动执行命令的方法

Ubuntu 下开机自动执行命令的方法&#xff08;使用 crontab&#xff09; 在日常使用 Ubuntu 或其他 Linux 系统时&#xff0c;我们常常需要让某些程序或脚本在系统启动后自动运行。例如&#xff1a;启动 Clash 代理、初始化服务、定时同步数据等。 本文将介绍一种简单且常用的…...

计算机组成与体系结构:补码数制二(Complementary Number Systems)

目录 4位二进制的减法 补码系统 &#x1f9e0;减基补码 名字解释&#xff1a; 减基补码有什么用&#xff1f; 计算方法 ❓为什么这样就能计算减基补码 &#x1f4a1; 原理揭示&#xff1a;按位减法&#xff0c;模拟总减法&#xff01; 那对于二进制呢&#xff1f;&…...