【Nginx反向代理,负载均衡,动静分离】

news/2024/7/10 2:53:52 标签: nginx, 负载均衡, 运维

文章目录

  • 一、反向代理的两种模式
    • 1.七层反向代理
      • 1.1 七层反向代理介绍
      • 1.2 七层反向代理原理
    • 2.四层反向代理
      • 2.1 四层反向代理介绍
      • 2.2 四层反向代理原理
  • 二、正向代理和反向代理及区别
    • 1.正向代理
    • 2.反向代理
    • 3.区别
  • 三、Tomcat重要目录
  • 四、Nginx应用及负载均衡实现原理
    • 1.Nginx应用
    • 2.Nginx负载均衡实现原理
      • 2.1 Nginx配置反向代理的主要参数
  • 五、Nginx动静分离实现原理
    • 1.动静分离原理
    • 2.Nginx静态处理优势

一、反向代理的两种模式

1.七层反向代理

1.1 七层反向代理介绍

七层反向代理(Layer 7 Reverse Proxy)是在应用层进行转发的反向代理服务。它能够根据应用层协议(如HTTP、HTTPS等)对网络请求进行解析和处理,将请求转发给后端服务器,并将响应返回给客户端。

1.2 七层反向代理原理

  1. 客户端发起请求:客户端向反向代理服务器发送请求,一般是使用统一资源定位符(URL)来标识请求的资源。

  2. 反向代理接收请求:反向代理服务器接收到客户端的请求,并解析出请求的目标资源。

  3. 负载均衡:如果有多台后端服务器提供相同服务,反向代理可以通过负载均衡算法将请求分发给后端服务器。负载均衡算法可以根据服务器的性能状况、负载情况等进行选择。

  4. 请求转发:反向代理将请求转发给后端服务器,通过建立新的网络连接将客户端的请求传递给目标服务器。

  5. 目标服务器处理请求:后端服务器接收到请求后,根据请求的内容进行处理,并生成相应的响应。

  6. 响应返回:后端服务器将处理结果封装成响应并返回给反向代理。

  7. 响应传递给客户端:反向代理服务器接收到后端服务器的响应后,将其传递给客户端作为最终的响应结果。

总结:七层反向代理能够在应用层面上进行更加精细的控制和处理。它可以根据请求的内容进行智能路由、请求重写、协议转换、缓存、SSL加密等操作。通过这些功能,七层反向代理可以提供更高级的负载均衡、安全性、性能优化和可扩展性等特性,从而提升应用的可用性和用户体验。七层反向代理软件包括Nginx、Apache HTTP Server等。

2.四层反向代理

2.1 四层反向代理介绍

四层反向代理(Layer 4 Reverse Proxy)是在传输层进行转发的反向代理服务。它使用传输层协议(如TCP、UDP)对网络请求进行解析和处理,将请求转发给后端服务器,并将响应返回给客户端。

2.2 四层反向代理原理

  1. 客户端发起连接请求:客户端向反向代理服务器发送连接请求,包括目标服务器的IP地址和端口号。

  2. 反向代理接收连接请求:反向代理服务器接收到客户端的连接请求。

  3. 负载均衡:如果有多台后端服务器提供相同服务,反向代理可以通过负载均衡算法将连接请求分发给后端服务器。负载均衡算法可以根据服务器的性能状况、负载情况等进行选择。

  4. 请求转发:反向代理将客户端的连接请求转发给后端服务器,并建立起与后端服务器的连接。

  5. 目标服务器处理请求:后端服务器接收到连接请求后,根据连接的传输层协议进行处理,并等待后续的数据传输。

  6. 数据传输:客户端和后端服务器之间开始进行数据的传输,包括请求数据和响应数据。

  7. 响应返回:后端服务器生成响应数据并返回给反向代理。

  8. 响应传递给客户端:反向代理服务器接收到后端服务器的响应数据,将其传递给客户端进行最终的响应。

总结:四层反向代理主要通过传输层协议进行转发,无法对应用层协议的内容进行深度解析和处理。它可以实现基于连接的负载均衡、快速转发和网络地址转换(NAT)等功能。但相比七层反向代理,四层反向代理缺少对应用层的细粒度控制和处理能力。常见的四层反向代理软件包括HAProxy、NGINX等。

二、正向代理和反向代理及区别

1.正向代理

客户端向代理服务器(nginx)发送一个请求,指定目标后端服务器,通过代理服务器转发,后端服务器处理好返回给代理服务器(nginx)。

2.反向代理

客户端向代理服务器(nginx)发送一个请求,然后代理服务器转发给后端服务器,处理好返回给代理服务器(nginx)。此过程中隐藏后端服务器真实IP地址。

3.区别

简单理解就是,访问过程中客户端知道后端服务器和不知道的区别
正向代理就时客户端发出请求,知道目标后端服务器
反向代理就是客户端发出请求,不知道后端服务器

三、Tomcat重要目录

1.bin
bin:存放启动和关闭Tomcat脚本

2.conf
conf:存放Tomcat不同的配置文件

3.doc
doc:存放Tomcat文档

4.lib
lib:存放Tomcat运行需要的库文件

5.logs
logs:存放Tomcat执行时的LOG文件

6.src
src:存放Tomcat的源代码

7.webapps
webapps: Tomcat的主要Web发布目录

8.work
work:存放jsp编译后产生的class文件

四、Nginx应用及负载均衡实现原理

1.Nginx应用

Nginx是一款非常优秀的HTTP服务器软件
支持高达50000个并发连接数的响应

拥有强大的静态资源处理能力
运行稳定
内存、CPU等系统资源消耗非常低

目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发。

2.Nginx负载均衡实现原理

通过反向代理nginx处理静态页面,将请求分发到多个服务器上,使得每个服务器都可以处理适量请求。
反向代理是在location配置

upstream是在server里配置

2.1 Nginx配置反向代理的主要参数

(1)upstream 服务池名{}

配置后端服务器池,以提供响应数据

(2)proxy_pass http://服务池名

配置将访问请求转发给后端服务器池的服务器处理

五、Nginx动静分离实现原理

1.动静分离原理

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端

2.Nginx静态处理优势

Nginx处理静态页面的效率远高于Tomcat的处理能力

若Tomcat的请求量为1000次,则Nginx的请求量为6000次

Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6MNginx处理静态资源的能力是Tomcat处理的6倍


http://www.niftyadmin.cn/n/1762504.html

相关文章

开源,自建?小微企业的代码仓库选型之路

背景:来自云效客户选型的一个参考,从搭建了自己的代码仓库到使用云效的Codeup的转变,云效Codeup 能自然的和钉钉群成员进行挂钩,并且云效Codeup 本身还有:仓库加密,代码备份,安全访问&#xff0…

WiseJ 2.5.30 and WiseJ 3.0.0 beta

使用 C# 或 VB.NET 和丰富的组件库直接在 Visual Studio 中设计和构建复杂的 Web 应用程序。 通过故障安全 WebSocket 连接上的小差异 Ajax/JSON 数据包保持浏览器和服务器实时同步。 Wisej 支持响应式中断、响应式属性、流和网格布局面板、自动调整大小和自动锚定/停靠&#x…

云开发在教育应用开发、运维全流程实践

编者按:10月21日,2021云栖大会云效BizDevOps分论坛上,教育行业- E联智校的研发总监、高级架构师- 冯涛老师围绕在云的时代,如何完成云阅卷从传统技术框架到云开发生态的变迁进行了分享。 本文从3方面介绍了我们依托云效解决了产品…

(状压dp)codevs2800 送外卖

2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 回到问题 测试通过 Accepted 总耗时: 201 ms 0 / 0 数据通过测试. 最近的错误点信息 运行结果 测试点#1.in 结果:AC 内存使用量: 256kB 时间使用量: 1ms 测试点#10…

VectorDraw web library (javascript) 9.9.0.3

VectorDraw 网络库 (javascript) 在研究了几年在互联网上展示或工作的可能性并拒绝了各种项目后,我们最终得出结论,在 javascript 的帮助下,我们将能够在微软的 IE 以外的互联网浏览器中展示 Web 上的矢量图形(支持ocx的地方&…

Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS

随着计算机技术和业务不断发展,企业软件规模越来越庞大,交付越来越复杂。持续交付 DevOps 解决方案逐渐深入人心,成为企业开发者研发模式首选。 市面上存在多种多样的 CICD 工具,不同的工具有不同特点。从开源的本地工具 Jenkins…

EurekaLog v7.10.1 EurekaLog

EurekaLog v7.10.1 EurekaLog 是一个用于 Delphi 和 CBuilder 的工具,它使您的应用程序能够捕获每个异常和内存/资源泄漏,生成调用堆栈的详细日志(带有单元、过程和行号),可以选择向您发送副本每个日志条目通过电子邮…

从零开始写javaweb框架 (1)

在本篇中我们主要来聊聊在网页的连接过程中,框架分别完成了哪些事情。 当我们输入网址按下回车键,http发送一个请求至web框架 获取所有类的包名,将拥有Service、Controller注解的类加入到Bean容器中对Bean容器中的类通过反射创建实例IOC容器的…