Nginx: 反向代理和动静分离概述

2024-08-27 08:28

本文主要是介绍Nginx: 反向代理和动静分离概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

反向代理

  • 反向代理服务器介于用户和真实服务器之间,提供请求和响应的中转服务
  • 对于用户而言,访问反向代理服务器就是访问真实服务器
  • 反向代理可以有效降低服务器的负载消耗,提升效率

1 )反向代理的模型

  • 现在我们有一个用户和真实服务器(通常在内网,无法直接访问到)
  • 我们通常会在中间加一个代理服务器(通常位于整个公司业务系统的边缘节点)
    • 边缘节点既能和内网保持连通, 同时还会配置一个公网的一个IP地址
    • 能够确保域名可以解析到这台代理服务器上的对应的IP地址
    • 从而确保用户请求可以到达我们这台代理服务器
  • 这个代理服务器充当的就是一个中间人的角色
    • 用户想要去访问后端的代理服务器的地址的时候
    • 其实并不知道你真实服务器在哪里
    • 它会将request的请求转发给我们的代理服务器
    • 代理服务器会再将这样一个请求转发给后端的一个真实服务器
    • 真实服务器拿到这样一个请求之后,就拆包找到请求体,请求头
    • 进行处理封包后,通过响应给代理服务器
    • 代理服务器拿到这样一个包之后,再把这个包传递给用户
  • 中间这个代理服务器,它其实相当于就是一个桥梁,起到的就是一个中间人的角色
    • 它将 request 或 response 在中间做一层中转
    • 而用户是不能够和后端的真实服务器发生任何关联的
  • 在用户和真实服务器之间加了一层代理服务器,为什么还能够提升效率呢?
    • 多了一层代理,就会多了一些网络的消耗,这个是一定的
    • 如果请求量比较少,确实效率会损耗,如果是大请求量和高并发的
    • 这种设计会事半功倍

2 )反向代理的优势

  • 隐藏真实服务器
    • 在内网里部署的一些真实的动态服务器来说,它本身的处理能力是很有限的
    • 将它们在内网中隐藏起来,而不让它直接接触到互联网,降低了这种攻击的可能性
  • 便于横向扩充后端动态服务
    • 一台不够,可以使用多台,便于横向扩充
  • 动静分离,提升系统健壮性
    • 在后端,动态服务器通常来说它提供的是动态服务
    • 而对 Nginx 自身来说,它处理静态服务是比较有优势的

3 )Nginx作为反向代理可支持的协议

  • 当用户的请求到达Nginx的时候,Nginx可以反向代理跟后端的应用服务器进行交互

  • 从而将动态请求分配给应用服务器,由应用程序服务器来进行处理, 处理完之后再返回给Nginx

  • Nginx 和 应用程序服务器交互的时候,它可以依据哪一些协议来进行工作

  • 大致可以把用户来的流量分为从四层和七层这样一个角度来说

  • 在四层,也就是我们TCP/UDP传输层所定义的一种协议
    • 只能够定位到IP+端口, 它跟很多的应用特性是没有关系的
    • 它也无法去判断具体业务的应用特性, 所以, 它能够做的工作并不多
    • 那这个时候用户过来的是TCP流量
    • Nginx 拿到之后传输给后端的应用服务器也只能是这个TCP流量
    • 也需要建立TCP连接,假如说,过来的是UDP流量,Nginx转发给后端应用服务器也是UDP的流量
    • 四层它是比较简单的,这个是由stream模块所提供的
  • 七层反向代理下支持哪些协议
    • 假如说,用户发过来是七层的HTTP协议, 通过HTTP访问Nginx
    • Nginx 可以将这一部分HTTP的流量转化为后面这七种不同的协议
    • 如果想使用uwsgi跟后端的应用程序服务器进行交互的时候
    • 后端的应用程序服务器部署的是用python写的一些外部框架
    • 还可以支持这个Google的grpc这样一个框架,可以把HTTP的流量通过一定的转换之后,转换到这个GRPC的流量,发给后端的应用程序服务器
    • 还可以转换成 memcached 的这样一些服务,假如说,HTTP请求中有一些特定的header,它可以根据header或者一些请求方法的不同,将对应这样一些header中的某一些参数转换为key,从而以 memcached 的协议的形式跟我们后端的应用程序服务器进行交互
    • 也支持基于websocket的协议的这种交互

动静分离

  • 动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口
    和动态内容接口分开不同系统访问的架构设计方法
  • 进而提升整个服务访问性能和可维护性

1 ) 设计模型演进

1.1 动静耦合

并发请求小,前后端耦合


1.2 动静分离

静态资源响应能力很强,动态资源需要业务逻辑计算

一台不够,可以多扩展几台

这篇关于Nginx: 反向代理和动静分离概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111144

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx: