nginx反向代理流程

一、nginx反向代理流程

反向代理:使用代理服务器来接受internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将上游服务器得到的结果返回给请求连接的客户端,代理服务器对外表现就是一个web服务器。Nginx就经常拿来做HTTP反向代理服务器。

Nginx具有强悍的高并发高负载能力,所以一般会作为前端服务器直接向客户端提供静态文件服务。但是一些复杂、多变的业务不适合放Nginx上,一般会使用Apache、Tomcat等服务器来处理。因此,Nginx一般会作为静态web服务器与反向代理服务器,将不适合自己处理的请求转发给上游服务器处理。

在这里插入图片描述

https://img-blog.csdnimg.cn/c9d704be6d2e4f97b1e95cc76c628ac9.png

Nginx代理服务器处理过程:

1.接受HTTP请求,将用户的请求(包括HTTP包体)完整的接受到Nginx服务器的磁盘或者内存中。

2.向上游服务器发起连接

3.将缓存的客户端请求转发到上游服务器

Nginx的这种转发方式与Squid等代理服务器的处理方式不同,Squid是一边接收客户端请求,一边将请求转发到上游服务器。相比之下 ,Nginx延长了一个请求处理的时间,并且增加了用于缓存请求内容的内存和磁盘空间。 但是Nginx有效的降低了上游服务器的负载,将压力放在了Nginx服务器上。

那么Nginx的这种机制是如何降低上游服务器的负载的呢?通常情况下,客户端与Nginx代理服务器走公网,代理服务器与上游服务器之间走内网。如果一边接受客户端请求,一般将请求转发到上游服务器的话,上游服务器需要长时间的保存这个连接,增加上游服务器的并发压力。但是如果是接受到完整请求之后,再转发给上游服务器的话,内网的速度更快,不需要那么长的时间保持连接,可以减低上游服务器的并发压力。

二、nginx反向代理具体执行过程

以访问:http://nginx.test.com为例:

1、当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 nginx.test.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块)

2、此时我们可以看到HTTP请求匹配到了server_name nginx.test.com;,这样接下来nginx就会在当前server块中匹配到 location / 。

3、接下来继续由nginx处理可以看到 location / { proxy_pass http://hellonginx; } ; 这就是进行反向代理处理,这个例子中使用的是nginx的upstream模块进行反向代理实现。

4、通过proxy_pass http://hellonginx; 中的 hellonginx 可以找到对应的upstream块,然后,可以根据其中的 server 127.0.0.1:8080 ;再次进行代理请求到目标服务器。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ByteBuffer 使用

ByteBuffer 使用 1 java.nio包中的类定义的缓冲区类型2 缓冲区常用属性2.1缓冲区的容量(capacity)2.2 缓冲区的位置(position)2.3 缓冲区的限制(limit)2.4 缓冲区的标记(mark)2.5 剩余容量 remaining/hasRemaining 3 缓冲区常用方法3.1 创建缓冲区3.1.1 allocate方法3.1.2 wrap…

87-基于stm32单片机粮仓仓库环境温湿度烟雾监测报警系统Proteus仿真+源码

资料编号:087 一:功能介绍: 1、采用stm32单片机OLED显示屏烟雾浓度检测DHT11温湿度电机按键蜂鸣器,制作一个温湿度采集、烟雾浓度采集,OLED显示相关数据, 2、通过按键设置温度上限、烟雾浓度上限&#xff0…

JVM虚拟机:初始化的介绍

本文重点 我们前面学习了三个步骤: 装载 连接 初始化 初始化 初始化的时候,会为静态成员变量赋值初始值,它有两种方式: ①声明类变量是指定初始值 ②使用静态代码块为类变量指定初始值 例子 最后输出的结果为3,它的过程是这样的: main方法中输出T.count,由于count是…

爬虫的代理IP池写哪里了?

亲爱的程序员小伙伴们,想要提高爬虫效率和稳定性,组建一个强大的代理IP池是非常重要的一步!今天我就来和你分享一下,代理IP池到底应该写在哪里,以及如何打造一个令人瞩目的代理IP池!准备好了吗?…

学习笔记整理-面向对象-03-构造函数

一、构造函数 1. 用new调用函数的四步走 new 函数();JS规定,使用new操作符调用函数会进行"四步走": 函数体内会自动创建出一个空白对象函数的上下文(this)会指向这个对象函数体内的语句会执行函数会自动返回上下文对象,即使函数没…

STM32单片机SPI通信实战:示例代码详解与应用案例

引言: 单片机SPI(串行外设接口)通信是一种常用的串行同步通信协议,用于单片机与外设之间的高速数据传输。SPI通信具有简单、高效、可靠等特点,在各种嵌入式系统中被广泛应用。本文将介绍单片机SPI通信的原理、配置和性…

人工智能在网络安全中的应用: 分析人工智能、机器学习和深度学习等技术在预测、检测和应对网络攻击中的作用

第一章:引言 随着信息技术的迅猛发展,网络安全已成为当今社会不容忽视的重要议题。网络攻击手法日益复杂,传统的防御方法已经不再足够。在这一背景下,人工智能(AI)技术正逐渐崭露头角,为网络安…

【制作npm包5】npm包制作完整教程,我的第一个npm包

制作npm包目录 本文是系列文章, 作者一个橙子pro,本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…

在Gazebo中添加悬浮模型后,利用键盘控制其移动方法

前段时间写了文章,通过修改sdf、urdf模型的方法,在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落:修改sdf、urdf模型_sagima_sdu的博客-CSDN博客 今天讲…

跨境外贸业务,选择动态IP还是静态IP?

在跨境业务中,代理IP是一个关键工具。它们提供了匿名的盾牌,有助于克服网络服务器针对数据提取设置的限制。无论你是需要经营管理跨境电商店铺、社交平台广告投放,还是独立站SEO优化,代理IP都可以让你的业务程度更加丝滑&#xff…

LaWGPT零基础部署win10+anaconda

准备代码,创建环境 # 下载代码 git clone https://github.com/pengxiao-song/LaWGPT cd LaWGPT # 创建环境 conda create -n lawgpt python3.10 -y conda activate lawgpt pip install -r requirements.txt # 启动可视化脚本(自动下载预训练模型约15GB…

LVS-DR模式下(RS检测)ldirectord工具实现部分节点掉点后将请求发往正常设备进行处理

基于前文的LVS-DR集群构建环境 一.下载ldirectord软件 二.将模板文件中的LVS-DR模式相关文件拷贝到/etc/ha.d主配置目录并按实际设备修改 三.配置两台RS匹配规则 四.停止RS1的http服务进行测试 RS1失去工作能力,RS2接替RS1 基于前文的LVS-DR集群构建环境 一.下…

网络安全--linux下Nginx安装以及docker验证标签漏洞

目录 一、Nginx安装 二、docker验证标签漏洞 一、Nginx安装 1.首先创建Nginx的目录并进入: mkdir /soft && mkdir /soft/nginx/cd /soft/nginx/ 2.下载Nginx的安装包,可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包…

​Redis概述

目录 Redis - 概述 使用场景 如何安装 Window 下安装 Linux 下安装 docker直接进行安装 下载Redis镜像 Redis启动检查常用命令 Redis - 概述 redis是一款高性能的开源NOSQL系列的非关系型数据库,Redis是用C语言开发的一个开源的高键值对(key value)数据库,官方提供测试…

AWS WAF实战、优势对比和缺陷解决

文章目录 挑战和目标AWS WAF的优势AWS WAF的不足我是怎么做的?什么是比较好的AWS WAF设计? 笔者为了解决公司Web站点防御性问题,较为深入的研究AWS WAF的相关规则。面对上千万的冲突,笔者不得设计出一种能漂亮处理冲突数据WAF规则。 AWS WAF开发人员在…

【OpenCV学习笔记】我的OpenCV学习之路

刚开始接触OpenCV是因为需要进行图像的处理,由于之前没有接触过,所以只能自己进行学习,下面将学习的过程做简单记录分享。 OpenCV专栏链接 OpenCV学习笔记 一、引言 OpenCV(Open Source Computer Vision Library)是…

【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类

tomcat仿写 项目结构扫描文件servlet注解map容器servlet工具类启动类调用 项目结构 扫描文件之前当然要确定一下项目结构了,我这里的方案是tomcat和项目同级 项目的话就仿照我们平时使用的结构就好了,我们规定所有的静态资源文件都在webApp目录下存放…

Redis进阶篇 - 04发布订阅、布隆过滤器、过期策略、回收机制、管道...核心知识原理

Redis底层原理篇,​让学习绚丽多彩起来!!!(需要原图私信)

shell连接ubuntu

当使用aws的私钥连接时,老是弹出输入私钥密码,但是根本没有设置过密码,随便输入后,又提示该私钥无密码... 很早就使用过aws的ubuntu,这个问题也很早就遇到过,但是每次遇到都要各种找找找...索性这次记下来算了 此处用FinalShell连接为例 首先现在Putty连接工具: 点击官方下载 …

【PySide】QtWebEngine网页浏览器打开Flash网页

QWebEngineView 加载 flash插件,可成功显示Flash,如图 说明 QtWebEngine与Chromium版本对应关系 Chromium对Flash的支持 QtWebEngine模块 Qt WebEngine取代了Qt WebKit模块,后者基于WebKit项目,但自Qt 5.2以来没有主动与上游We…