系统设计之Nginx

一、Nginx是什么

Nginx ("engine x") 是一个开源的,支持高性能、高并发的 Web 服务和代理服务软件。它是由俄罗斯人 Igor Sysoev 开发的,最初被应用在俄罗斯的大型网站 www.rambler.ru 上。后来作者将源代码以类 BSD 许可的形式开源出来供全球使用。

Nginx 的官方介绍见 nginx
Nginx 中文介绍见 nginx

二、Nginx 基本特性

  • 可针对静态资源高速高并发访问及缓存。
  • 可使用反向代理加速,并且可进行数据缓存。
  • 具有简单负载均衡、节点健康检查和容错功能。
  • 支持远程 FastCGI 服务的缓存加速。
  • 支持 FastCGI、Uwsgi、SCGI、Memcached Servers 的加速和缓存。
  • 支持SSL、TLS、SNI。
  • 具有模块化的架构:过滤器包括 gzip 压缩、ranges 支持、chunked 响应、XSLT、SSI 及图像缩放等功能。在SSI 过滤中,一个包含多个 SSI 的页面,如果经由 FastCGI 或反向代理,可被并行处理。

三、Nginx Web 服务特性

  • 支持基于名字、端口及IP的多虚拟主机站点。
  • 支持 Keep-alive 和 pipelined 连接。
  • 可进行简单、方便、灵活的配置和管理。
  • 支持修改 Nginx 配置,并且在代码上线时,可平滑重启,不中断业务访问。
  • 可自定义访问日志格式,临时缓冲写日志操作,快速日志轮询及通过 rsyslog 处理日志。
  • 可利用信号控制 Nginx 进程。
  • 支持 3xx-5xx HTTP状态码重定向。
  • 支持 rewrite 模块,支持 URI 重写及正则表达式匹配。
  • 支持基于客户端 IP 地址和 HTTP 基本认证的访问控制。
  • 支持 PUT、DELETE、MKCOL、COPY 及 MOVE 等特殊的 HTTP 请求方法。
  • 支持 FLV 流和 MP4 流技术产品应用。
  • 支持 HTTP 响应速率限制。
  • 支持同一 IP 地址的并发连接或请求数限制。
  • 支持邮件服务代理。

下图显示了 𝐟𝐨𝐫𝐰𝐚𝐫𝐝 𝐩𝐫𝐨𝐱𝐲 和 𝐫𝐞𝐯𝐞𝐫𝐬𝐞 𝐩𝐫𝐨𝐱𝐲 之间的差异。

转发代理是位于用户设备和互联网之间的服务器。

转发代理通常用于:

  1. 保护客户
  2. 规避浏览限制
  3. 阻止访问某些内容

反向代理是一种服务器,它接受客户端的请求,将请求转发到 Web 服务器,并将结果返回给客户端,就好像代理服务器已经处理了请求一样。

反向代理适用于:

  1. 保护服务器
  2. 负载均衡
  3. 缓存静态内容
  4. 加密和解密 SSL 通信

四、常见的负载均衡算法有哪些?

负载均衡算法用于分配网络或应用程序的入口流量到多个服务器,以确保每个服务器获得合理的负载,提高系统的性能和可用性。以下是一些常见的负载均衡算法:

  1. 轮询(Round Robin):

    • 请求按顺序分配给每个服务器,确保每个服务器都平均分担负载。
  2. 最小连接数(Least Connections):

    • 请求分配给当前连接数最少的服务器。适用于连接数是负载的主要因素的情况。
  3. 最短响应时间(Least Response Time):

    • 请求分配给响应时间最短的服务器,通常基于服务器的实时性能。
  4. 哈希法(Hashing):

    • 将请求的某些属性(如IP地址、URL等)哈希为一个固定范围的值,然后将请求分配给对应的服务器。
  5. IP哈希法(IP Hash):

    • 使用请求的源IP地址进行哈希,确保同一客户端的请求始终被分配到同一台服务器。
  6. 加权轮询(Weighted Round Robin):

    • 给每个服务器分配一个权重值,高权重服务器接收到的请求多于低权重服务器。
  7. 加权最小连接数(Weighted Least Connections):

    • 结合了轮询和最小连接数算法,给每个服务器分配权重,然后按权重选择最少连接的服务器。
  8. 随机算法(Random):

    • 随机选择一个服务器来处理请求,适用于负载较轻的情况。
  9. 最少请求(Least Request):

    • 将请求分配给当前积压请求数最少的服务器,以确保请求被平均分配。

这些算法可以单独使用或结合使用,具体选择取决于应用程序的特性和负载均衡的要求


 

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

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

相关文章

2023年山东省职业院校技能大赛信息安全管理与评估第一阶段样题

2023年山东省职业院校技能大赛信息安全管理与评估样题 竞赛需要完成三个阶段的任务,分别完成三个模块,总分共计 1000 分。三个模块内容和分值分别是: \1. 第一阶段:模块一 网络平台搭建与设备安全防护(240 分钟&…

Nginx负载均衡实战

🎵负载均衡组件 ngx_http_upstream_module https://nginx.org/en/docs/http/ngx_http_upstream_module.html upstream模块允许Nginx定义一组或多组节点服务器组,使用时可以通过多种方式去定义服务器组 样例: upstream backend {server back…

2023中国(海南)国际高尔夫旅游文化博览会 暨国际商界峰层·全球华人高尔夫精英巡回赛 全国颍商自贸港行盛大启幕

2023中国(海南)国际高尔夫旅游文化博览会(以下简称“海高博”)暨全国颍商走进海南自贸港于12月7-9日在海口观澜湖盛大开幕。该活动由中国国际贸易促进委员会海南省委员会、海南省旅游和文化广电体育厅主办,中国国际商会…

windows安装rabbitmq

注:安装 rabbitmq 之前需要先安装 erlang 语言包,否则安装过程会报错 erlang 语言包名称:otp_win64_25.3.2.3.exe。erlang 和 rabbitmq 有严格的版本对应。 部分版本对应: 安装 1、安装 erlang 并配置环境变量 1.1 双击 otp_…

在Deepin中安装x11vnc工具并结合内网穿透软件实现远程访问桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具,它的原理是通过X Window系统的协议来实现远程桌面的展…

007:vue实现与iframe实现页面数据通信

首页先搭建一个html页面和vue页面,在vue页面中,嵌入我们需要的iframe页面 文章目录 1. 搭建 html 页面和 vue 页面2. 实现 iframe 向 vue 页面通信3. 在实现 vue 向 iframe 页面通信 1. 搭建 html 页面和 vue 页面 暂定为 iframeDemo.html 和 vueDemo.v…

Linux中的SNAT与DNAT实践

Linux中的SNAT与DNAT实践 1、SNAT的介绍1.1,SNAT概述1.2,SNAT源地址转换过程1.3,SNAT转换 2、DNAT的介绍2.1,DNAT概述2.2,DNAT转换前提条件2.3,DNAT的转换 3、防火墙规则的备份和还原4、tcpdump抓包工具的运…

App 设计工具中的启动任务和输入参数

目录 创建 startupFcn 回调 定义输入 App 参数 可以使用 App 设计工具创建一个特殊函数,该函数在 App 启动时、但在用户与 UI 进行交互之前执行。此函数称为 startupFcn 回调,它非常适用于设置默认值、初始化变量或执行影响 App 初始状态的命令。例如&…

redis中使用事务保护数据完整性

事务是指一个执行过程,要么全部执行成功,要么失败什么都不改变。不会存在一部分成功一部分失败的情况,也就是事务的ACID四大特性(原子性、一致性、隔离性、持久性)。但是redis中的事务并不是严格意义上的事务&#xff…

使用Pytorch实现VGGNet(含VGGNet特征整理)

知识点整理 VGGNet 的主要特点: 采用3x3的小卷积核将模型提升到11-19层进一步提升了模型的泛化能力模型结构相对简洁 VGGNet主要解决了以下几个问题: 首先在当时的卷积神经网络中网络结构越深网络表现的性能越好,但同时也会带来较大的复杂…

IP地址定位技术为网络安全建设提供全新方案

随着互联网的普及和数字化进程的加速,网络安全问题日益引人关注。网络攻击、数据泄露、欺诈行为等安全威胁层出不穷,对个人隐私、企业机密和社会稳定构成严重威胁。在这样的背景下,IP地址定位技术应运而生,为网络安全建设提供了一…

CPU设计——Triumphcore——MP_work版本

该版本用作系统寄存器的实现,M/S/U状态的实现与切换,以及load/store的虚实地址转换 设计指标 2023.12.8 2023.12.9 不实现mideleg和medeleg,因此一旦出现异常,直接切换至M态, 调试记录 到存储区中取PTE要额外至少…

HNU计算机视觉作业三

前言 选修的是蔡mj老师的计算机视觉,上课还是不错的,但是OpenCV可能需要自己学才能完整把作业写出来。由于没有认真学,这门课最后混了80多分,所以下面作业解题过程均为自己写的,并不是标准答案,仅供参考 …

leetcode:643. 子数组最大平均数 I(滑动窗口)

一、题目 链接:643. 子数组最大平均数 I - 力扣(LeetCode) 函数原型: double findMaxAverage(int* nums, int numsSize, int k) 二、思路 滑动窗口: 先计算数组前k个元素总和,作为第一个窗口,默…

软件设计之组合模式

组合模式:将对象组合成树形结构。 案例:公司管理。一个公司可以分总公司和分公司,无论是总公司还是分公司都有自己的部门,如人力资源管理部门、财务部门。分公司可以建立自己在不同地域的办事处。请使用组合模式打印出某个公司的…

苹果笔记本网络恢复系统方法

1、开机时按下Option键,进行网络连接; 2、重新开机的同时然后按Command R键,Mac自动联网恢复并进入“MacOS X实用工具”; 3、进入“磁盘工具”; 4、在左边选择磁盘,选取“分区”标签,选择“分区…

dToF直方图之美_deadtime死区时间

上节在激光雷达多目标测距中有个问题为什么激光雷达不用做pile up算法,有人会有疑问,我看过很多人的简历,都把pile up量产校正算法写为最为自豪重要的算法攻坚,可能会吸引一波人的眼球。这要是在两三年前是值得被肯定的,但是如今随着dToF非常多量产项目落地,pile up研究不…

如何本地搭建开源分布式任务调度系统DolphinScheduler并远程访问

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

java简述springboot内置数据库 并举例启动h2内存数据环境

在前面 我们讲了 springboot 给我们提供了 默认的 数据源 默认 HikariCP 以及其他两种内置数据源 持久化技术 JdbcTemplate 那么 说起来很多人难以置信 不过 springboot 也真的给我们内置了数据库技术 而且不止一种 是三种 这三个数据库的特点在于 它们都是用java语言写的 就表…

YOLOv8-DeepSort/ByteTrack-PyQt-GUI:全面解决方案,涵盖目标检测、跟踪和人体姿态估计

YOLOv8-DeepSort/ByteTrack-PyQt-GUI是一个多功能图形用户界面,旨在充分发挥YOLOv8在目标检测/跟踪和人体姿态估计/跟踪方面的能力,与图像、视频或实时摄像头流进行无缝集成。支持该应用的Python脚本使用ONNX格式的YOLOv8模型,确保各种人工智…