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

nginx反向代理 负载均衡

 

目录

1.反向代理介绍:

 2.七层代理和四层代理:

  2.1 七层代理:

  2.2 四层代理:

3.反向代理web服务器:

  3.1 代理服务器配置:

3.2 服务器配置 :

3.3 客户端访问:

3.4 代理不同端口:

4.反向代理动静分离:

  4.1  准备:

  4.2 代理服务器配置:

  4.3 动态服务器配置:

  4.4 静态服务器配:

  4.5  测试:

5.反向代理服务器的缓存功能:

  5.1 主配置文件定义缓存参数:

  5.2 子配置文件调用缓存功能:

    5.3 示例:

代理服务器:

测试:

  6.反向代理客户端IP透传: 

    6.1反向代理服务器配置:

  6.2 服务器日志:   

7.反向代理负载均衡:

  7.1 默认算法轮询:

7.2  加权轮询:

7.3 IP_hash:

7.4 url_hash:

7.5 least_conn:

7.6 使用场景总结:


1.反向代理介绍:

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

   Nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能

 2.七层代理和四层代理:

  2.1 七层代理:

  • 七层是最常用的反向代理,只能配置的在nginx配置文件的http模块中
  • 配置的方法名称:upstream 模块,不能写在server中,也不能在location中,在http模块当中是独立的一个配置

  2.2 四层代理:

  • 四层代理是基于tcp/ip协议层的代理转发方式,可以实现基于ip地址和端口进行负载均衡转发。
  • 四层代理无法获取http请求当中的URL信息,只能对tcp/udp数据包进行转发。流量转发。
  • 配置的方法名称:stream,stream是不能配置在http模块中,配置在全局当中。是属于一个独立的模块,不属于其他任何模块。

3.反向代理web服务器:

  3.1 代理服务器配置:

vim /apps/nginx/conf.d/www.conf
server{listen 80;server_name  www.wzw.com;root    /apps/nginx/html;location  / {proxy_pass http://192.168.88.101;
}}

3.2 服务器配置 :

      vim /apps/nginx/html/index.html

<html>
<body>
<h1>this is yunjisuan  </h1>
<img src="http://www.wzw.com/2.jpg"/>
</body>
</html>

3.3 客户端访问:

3.4 代理不同端口:

   代理服务器添加监听端口:

4.反向代理动静分离:

  4.1  准备:

  4.2 代理服务器配置:

server{listen 80;listen 8080;server_name www.wzw.com;root /apps/nginx/html;location  /static {proxy_pass http://192.168.88.128;
}location  /api  {proxy_pass http://192.168.88.101;
}
}nginx -s reload

  4.3 动态服务器配置:

  cd /apps/nginx/htmlmkdire  apivim index.htmlapiapiapiapiapiapiapivim /apps/nginx/conf/nginx.confserver块添加监听端口:listen 8080;nginx -s reload

  4.4 静态服务器配:

  cd /apps/nginx/htmlmkdire  apivim index.htmlstaticstaticstaticstaticstaticstatic

  4.5  测试:

5.反向代理服务器的缓存功能:

  后端服务器突然关闭时,客户端无法访问,代理服务器的缓存功能可以加强安全稳定性。

  5.1 主配置文件定义缓存参数:

proxy_cache_path /apps/nginx/proxycache #定义缓存保存路径

levels=1:1:1 #定义缓存目录结构层次

keys_zone=proxycache:20m #指内存中缓存的大小,主要用于存放key

inactive=120s #缓存有效时间

max_size=10g; #最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值

  5.2 子配置文件调用缓存功能:

proxy_cache proxycache        ##使用定义名称; 

proxy_cache_key $request_uri;  #对客户端url的数据进行MD5的运算做为缓存的key

proxy_cache_valid   [code ...]  time;  #定义对【响应码】的响应内容的缓存时长     

proxy_cache_valid any 1m;  #除指定的状态码返回的数据以外的缓存多长时间,必须设置,否则不会缓存

 清理缓存   方法1::rm -rf 缓存目录  (还是这个方便。。)

                  方法2: 第三方扩展模块ngx_cache_purge

    5.3 示例:

代理服务器:

vim /apps/nginx/conf/nginx.confhttp模块添加:proxy_cache_path /apps/nginx/proyxcache levels=1:1:1  keys_zone=proxycache:20m inactive=120s max_size=1g;vim /apps/nginx/conf.d/www.confserver块添加:proxy_cache proxycache;proxy_cache_key $request_uri;proxy_cache_valid 200 302 301 10m;proxy_cache_valid any 5m;

测试:

  真实服务器关闭服务: 

  
6.反向代理客户端IP透传: 

    6.1反向代理服务器配置:

location  / {proxy_pass http://192.168.88.101:8080;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#添加 客户端IP和反向代理服务器IP到请求报文头部;
}proxy_set_header X-Real-IP $remote_addr;#也可以使用,只添加客户端IP到请求报文头部,转发至后端服务器;

  6.2 服务器日志:   

$http_x_forwarded_for;    记录跳转信息,默认日志中有此项。如果是自定义日志需要添加。

7.反向代理负载均衡:

    Nginx 可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能。

  7.1 默认算法轮询:

    最基本的配置方法,每个请求会按时间顺序逐一分配到不同的后端服务器基本上1:1。

upstream wzw {                   ##定义一组服务器组server 192.168.88.101;server 192.168.88.128;}server{listen 80;server_name www.wzw.com;root /apps/nginx/html;location  / {proxy_pass http://wzw;    ##代理到wzw组proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

7.2  加权轮询:

  加权轮询建立在轮询算法之上,通过给不同web服务器权重,让处理能力更强的服务器可以分配到更多的请求。

upstream wzw {                   ##定义一组服务器组server 192.168.88.101  weight=5;server 192.168.88.128  weight=1;}server{listen 80;server_name www.wzw.com;root /apps/nginx/html;location  / {proxy_pass http://wzw;    ##代理到wzw组proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

7.3 IP_hash:

  • ip_hash根据IP地址,计算出hash值,使用ip_hash算法,同一客户端的请求会被分配到同一个后端服务器,从而保证会话的稳定性,请求速度块。
  • 缺点:如果后端服务器数量发生改变,hash会重新计算,请求服务器也会改变。
upstream wzw { ip_hash;        ##同一个IP客户端固定访问一个后端服务器server 192.168.88.101; weight=5;server 192.168.88.128; weight=1;
}

7.4 url_hash:

   根据uri地址计算hash值,使用url_hash会把相同请求的uri分配到同一个后端web服务器

upstream wzw { hash $request_uri consistent;   #基于用户请求的uri做hashserver 192.168.88.101; weight=5;server 192.168.88.128; weight=1;
}

7.5 least_conn:

    最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器

   主要适用于后端服务器处理任务耗时不同的情况,避免了所以请求集中在处理能力更强的服务器上,一般配合加权轮询使用

upstream wzw { least_conn;server 192.168.88.101; weight=5;server 192.168.88.128; weight=1;
}

7.6 使用场景总结:

  1. 小场景:并发量很小,默认算法就可以满足
  2. 后端web服务器的处理性能有差异:加权轮询与最少连接数配合使用
  3. 大型并发:ip_hash或url_hash(可直接访问缓存,从而缓解后端服务器压力,第一次请求后,会有贝蒂缓存,而且因hash算法原因,请求的后端web服务器不会发生变化,从而可以提高访问速度。

 注: 

ip_hash:后端服务器数量发生变化,请求的服务器也会发生变化

url_hash:请求的地址发生变化,请求的服务器也可能发生变化

相关文章:

nginx反向代理 负载均衡

目录 1.反向代理介绍&#xff1a; 2.七层代理和四层代理&#xff1a; 2.1 七层代理&#xff1a; 2.2 四层代理&#xff1a; 3.反向代理web服务器&#xff1a; 3.1 代理服务器配置&#xff1a; 3.2 服务器配置 &#xff1a; 3.3 客户端访问&#xff1a; 3.4 代理不同端口&am…...

hugging face inference API返回内容太短的问题

hugging face的inference api返回的内容默认很短&#xff0c;可以通过参数max_new_tokens进行设置&#xff1a; Detailed parameters When sending your request, you should send a JSON encoded payload. Here are all the options All parametersinputs (required):a str…...

react中redux的详细使用以及持久化处理

一.redux使用 1.安装 npm i redux 例一&#xff1a; 2.创建redux文件夹&#xff0c;store.js文件 store.js文件 import {legacy_createStore as createStore,combineReducers}from "redux" // 每一块状态内容对应一个reducer文件 import {CollApsedReducer} fro…...

论文笔记: 循环神经网络进行速度模型反演 (未完)

摘要: 分享对论文的理解, 原文见 Gabriel Fabien-Ouellet and Rahul Sarkar, Seismic velocity estimation: A deep recurrent neural-network approach. Geophysics (2020) U21–U29. 作者应该是领域专家, 对地球科学的理解胜于深度学习. 为方便讨论, 等式编号保持与原文一致.…...

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预…...

excel绘制直方图

Excel 2016直方图使用指南 excel绘制各种曲线十分方便&#xff0c;可以通过代码将计算的数据输出到excel里面&#xff0c;然后通过excel的插入标签&#xff0c;绘制各种需要的曲线。 对于直方图&#xff0c;横坐标是分布区间&#xff0c;纵坐标是这个区间内数值的频数&#x…...

react-grid-layout 实现原理介绍

简介 React-grid-layout 是一个基于 React 的网格布局库&#xff0c;它可以帮助我们轻松地在网格中管理和排列组件。它提供了一个直观的 API&#xff0c;可以通过配置网格的大小、列数和组件的位置来实现复杂的布局&#xff0c;还支持对网格中组件的拖拽和重新排列。 实现 诉…...

集合框架-(Collection/Map)

1.单列集合 1.1基础概要 集合中存储的是对象的地址信息&#xff0c;想要输出对象的信息&#xff0c;需要在具体的类中重写toString&#xff08;&#xff09;方法 Collection代表单列集合&#xff0c;每个元素数据只包含一个值 List集合&#xff1a;添加的元素可以是有序、可…...

什么是单文件组件?

单文件组件形式 非单文件组件 可以理解为是通过 html 文件来使用 Vue。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><…...

国际站阿里云服务器多久会重启一次系统??

阿里云服务器是一种高性能、高可靠的云计算服务&#xff0c;但在长时间运行过程中&#xff0c;系统可能会出现一些问题&#xff0c;需要重启来恢复正常运行。那么&#xff0c;阿里云服务器多久重启一次系统呢&#xff1f;本文将对这个问题进行解答。 阿里云服务器重启频率 阿里…...

低成本32位单片机电动工具无感方波控制方案

RAMSUN介绍基于灵动32位微处理器MM32SPIN0230的BLDC电动工具无感方波控制方案&#xff0c;包括MM32SPIN0230芯片资源。 以下是电动工具无感方波控制方案的简述&#xff1a; MM32SPIN0230电动工具专用板 芯片介绍 MM32SPIN0230系列是灵动微MindSPIN旗下高性能的单电机控制产品…...

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法播放HLS协议该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

MySQL如何查找某个字段值相同的数据

当我们想要查找MySQL中某个字段值相同的数据&#xff0c;但我们又不知道这个数据的值是什么的时候该如何操作呢&#xff1f; 在我的数据表中有单词表以及对应的详细信息表&#xff0c;如果两张表是以单词作为逻辑上的外键时&#xff0c;查询单词详细信息操作就可以根据word值进…...

8.react18并发模式与startTransition(搜索高亮思路)

React 18 之前,渲染是一个单一的,不间断的,同步的事务,一旦渲染开始,就不能被中断 React 18引入并发模式,它允许你将标记更新作为一个transitions,这会告诉React他们可以被中断执行.这样可以将紧急任务先更新,不紧急任务后更新. 将任务给紧急任务先执行, 优先级低的任务后执行…...

前端Vue自定义得分构成水平柱形图组件 可用于系统专业门类得分评估分析

引入Vue自定义得分构成水平柱形图组件&#xff1a;cc-horBarChart 随着技术的发展&#xff0c;传统的开发方式使得系统的复杂度越来越高&#xff0c;一个小小的改动或小功能的增加可能会导致整体逻辑的修改&#xff0c;造成牵一发而动全身的情况。为了解决这个问题&#xff0c…...

Linux获取纳秒级别时间

在 Linux 系统中可以使用 gettimeofday 函数来获取时间&#xff0c;这个函数能够以毫秒的精度来获取时间 struct timeval tv;gettimeofday(&tv, NULL);time_t cur_time tv.tv_sec;long cur_time_ms tv.tv_usec/1000;printf(“cur_time %d \n”, cur_time);printf(“cur…...

CSS中你不得不知道的盒子模型

目录 1、CSS的盒子模型1.1 css盒子模型有哪些&#xff1a;1.2 css盒子模型的区别1.3 通过css如何转换css盒子模型 1、CSS的盒子模型 1.1 css盒子模型有哪些&#xff1a; 标准盒子模型、怪异盒子模型&#xff08;IE盒子模型&#xff09; 1.2 css盒子模型的区别 标准盒子模型&a…...

知识储备--基础算法篇-数组

1.学习 2.数组 2.1第53题-最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 心得&#xff1a;一直在纠结这个连续的事情&…...

zookeeper 理论合集

目录 系统背景 集群结构 多个节点之间的角色 节点的状态 为什么引入 Observer 存储结构 ZNode 节点结构 ZNode 创建类型 内存数据存储 数据持久化 zookeeper 的容量大小 数据同步 消息广播 崩溃恢复 如何保证顺序一致性 核心流程 Leader 选举流程 脑裂问题 …...

【pyinstaller 怎么打包python,打包后程序闪退 不打日志 找不到自建模块等问题的踩坑解决】

程序打包踩坑解决的所有问题 问题1 多个目录怎么打包 不管你包含多个层目录&#xff0c;引用多么复杂&#xff0c;只需要打包主程序所在文件即可&#xff0c;pyinstaller会自动寻找依赖包&#xff0c;如果报错自建模块找不到&#xff0c;参照问题3 pyinstaller main.py问题2…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...