【安全】Nginx实现反向代理负载均衡

news2024/12/26 22:48:19

基础概念 

什么是负载均衡?

        负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求;即把请求均匀的分摊给上游的应用服务器。最基本的配置方式便是轮询:

负载均衡策略

策略

轮询

根据请求顺序分配

weight

根据权重大小分配

ip_hash

根据ip分配

least_conn

根据(最小)连接数分配

fair(第三方)

根据响应时间分配

url_hash(第三方)

依据URL分配

什么是反向代理?        

        代理一词,顾名思义就是代为处理,正向代理就是代替客户端处理,代替客户端进行各种服务的访问以及获取。那么反向代理自然就是代替服务器进行事务处理,即就是此时的代理服务器负责将用户的各项请求做一个汇总,分类,将其分发到不同的服务器上去进行处理。从而达到负载均衡和隐匿真实服务器的作用

nginx反向代理(负载均衡)

Ⅰ、环境准备

        准备三台配置了nginx的服务器

        博主的:

                centos7 (192.168.174.77)
                node1 (192.168.174.128)
                node2 (192.168.174.131)

//先关闭防火墙
systemctl stop firewalld
//修改nginx首页文件,随便改留个标记分清服务器就行
vim /usr/local/nginx/html/index.html
//重新加载nginx
/usr/local/nginx/sbin/nginx -s reload

 

 Ⅱ、在另外一台服务器上配置反向代理

vim /usr/local/nginx/conf/nginx.conf
示例配置文件//没用到的我都删掉了
worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
   #负载均衡策略配置
    upstream nginx_reverse{
        # 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2
        server 192.168.174.128 weight=100 max_fails=2 fail_timeout=30s; 
        server 192.168.174.131 weight=200 max_fails=2 fail_timeout=30s;
        # 这里的IP请配置成你WEB服务所在的机器IP
        }
    server {
        listen       80;
        server_name  localhost;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        #再此处使用location调用负载均衡策略
        location / {
        #设置根目录
         root   /var/www/html;
         index  index.html index.htm;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         # 请求交给名为nginx_reverse的upstream上
         proxy_pass http://nginx_reverse;
        }
    }
}
//重新加载nginx
/usr/local/nginx/sbin/nginx -s reload

Ⅲ、验证

        访问三次192.168.174.77/index.77

 

 【验证成功,和我们设定的权重(1:2)一致】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件工程】COMP5241 SE课程笔记

Software EngineeringCourse1 IntroductionCloud Native AppsScheduleSoftware InstallProject Chaos ReportWhat is Software EngineeringHow to define a good AppsSteps of SoftwareCourse4本笔记记录始于2023年2月13日,为在读研究生期间COMP5241 SE课程笔记整合…

检测脸部情绪有多难?10行代码就可以搞定!

引言面部表情展示人类内心的情感。它们帮助我们识别一个人是愤怒、悲伤、快乐还是正常。医学研究人员也使用面部情绪来检测和了解一个人的心理健康。人工智能在识别一个人的情绪方面可以发挥很大的作用。在卷积神经网络的帮助下,我们可以根据一个人的图像或实时视频…

封装、继承、多态、上下转型、静态绑定、动态绑定、PO/Bean/Vo/Do/Dto,dljd reyco郭

封装 “封装”这个概念,由两部分构成:一部分是封,一部分是装。“封装”这个动作,顺序应该是先装后封。 装:原本name、age、score是3个不同的、离散的数据,它们之间是有关系的是,都是用来描述一个…

东芝TLP5772光耦与SLM346兼容光耦的单通道隔离驱动器比较

东芝TLP5772光耦与SLM346兼容光耦的单通道隔离驱动器比较一般描述:SLM346是一款光兼容单通道,隔离栅驱动器,用于IGBT、MOSFET和2.5A源和2.5A汇峰值输出电流和5kVRMS加强隔离等级。SLM346可以驱动低侧和高侧功率场效应晶体管。可靠性升级超过标…

PDFPrinting.Net操作进行细粒度控制

PDFPrinting.Net操作进行细粒度控制 PDFPrinting.Net能够容易且灵活地预测完美的打印结果以及用户文件的示例性显示。可以快速浏览.NET PDF打印中最关键的元素。如果用户需要获得更详细的概述,那么他可以查看快速入门手册,甚至是现有文档的详细概述参考。…

如何发布一个 TypeScript 编写的 npm 包

本文正在参加「金石计划 . 瓜分6万现金大奖」 原文链接:www.strictmode.io/articles/bu… 作者:strictmode.io 前言 在这篇文章中,我们将使用TypeScript和Jest从头开始构建和发布一个NPM包。 我们将初始化一个项目,设置TypeS…

关于在Interceptor拦截器中使用autowired注入,但是却注入为null。引出在自动装配时,只有在ioc容器中的bean可以互相自动装配。

问题描述 在拦截器拦截登录请求,想通过从redis中取出token,判断token是否为null,进而判断是否登录。 Component public class LoginInterceptor implements HandlerInterceptor {AutowiredStringRedisTemplate redisTemplate;Overridepubli…

基于matlab的SAR图像中自动目标识别

一、前言此示例演示如何使用深度学习工具箱和并行计算工具箱™™训练基于区域的卷积神经网络 (R-CNN) 以识别大场景合成孔径雷达 (SAR) 图像中的目标。深度学习工具箱提供了一个框架,用于设计和实现具有算法、预训练模…

MyBatis_自定义映射resultMap

自定义映射resultMap 文章目录自定义映射resultMap创建数据表实体类字段名和属性名不一致(三种方式)取别名设置全局配置设置resultMap处理多对一的映射关系(三种方式)级联方式处理association分步查询处理一对多的映射关系(两种方式)collection分步查询创建数据表 复制进MySQL…

强化学习笔记-03有限马尔可夫决策过程MDP

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。 前文我们了解了强化学习主要是为了实现最大化某个特定目标(收益),而学习如何通过环境进行交互。 而学…

PCI Express体系结构导读_3PCI总线的数据交换--读书笔记

前言本文为读书笔记,如有误可以指正,一块学习交流本章节主要介绍两种类型的数据传输:a- host读写pci设备的bar寄存器。b- pci设备通过DMA方式读写内存。对于PCI设备读写其他PCI设备的bar寄存器只了解3.1- pci设备bar空间的初始化3.1.1 内存域…

33复杂美:一文看懂加密算法为何物

加密算法 ,区块链底层技术的心脏究竟为何物?加密,简而言之,加密就是借助一种或多种算法将明文信息转换成密文信息,信息的接收方通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,加…

C++:类和对象(下)

文章目录1 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2 static成员2.1 概念2.2 特性3 友元3.1 友元函数&#xff08;流插入&#xff08;<<&#xff09;及流提取&#xff08;>>&#xff09;运算符重载&#xff09;3.2 友元类4 内部类5 匿名对…

使用脚本以可读的 JSON 格式显示 curl 命令输出

在我们经常调试微服务或者使用 Elasticsearch API 时&#xff0c;经常会使用curl 来进行调试。但是有时我们的输出不尽如意。显示的不是一 pretty 格式进行输出的。我们有时还必须借助于其他的一些网站工具&#xff0c;比如 Best JSON Formatter and JSON Validator: Online JS…

叮!一大波来自客户的感谢信

春风渐暖&#xff0c;美好如期&#xff0c;祝福的话语在日子的酝酿里更值得期待。神策数据走过 7 载春秋&#xff0c;描绘的大数据分析和营销科技图景在时间的打磨下清晰可见。时光沉淀经验&#xff0c;匠心兑换卓越&#xff0c;这条终点叫做「帮助中国三千万企业重构数据根基&…

类与对象(上)

类与对象(上) 1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间…

vite从零创建react-ts项目

1.创建vite-react-ts文件夹&#xff0c;初始化项目 npm init 初始化后可以看到包管理文件package.json 2.项目结构 根目录下新建index.html模板文件。以往都是放在public文件夹的&#xff0c;但是官方推荐放在根目录。这是有意而为之的&#xff1a;在开发期间 Vite 是一个服…

qt之条形码与二维码的生成

一、简介 条形码&#xff1a; 条形码(barcode)是将宽度不等的多个黑条和空白&#xff0c;按照一定的编码规则排列&#xff0c;用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条&#xff08;简称条&#xff09;和白条&#xff08;简称空&#xff09;排…

探讨接口测试以及其用例设计方法

接口测试的总结文档 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1a;主要介绍为什…

数据结构:带环单链表基础OJ练习笔记(leetcode142. 环形链表 II)(leetcode三题大串烧)

目录 一.前言 二.leetcode160. 相交链表 1.问题描述 2.问题分析与求解 三.leetcode141. 环形链表 1.问题描述 2.代码思路 3.证明分析 下一题会用到的重要小结论&#xff1a; 四.leetcode142. 环形链表 II 1.问题描述 2.问题分析与求解 Judgecycle接口&#xf…