Nginx-03-Nginx 项目架构

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

Nginx 现状

nginx(发音为“engine x”)是一个免费的开源Web服务器,由俄罗斯软件工程师Igor Sysoev编写。自2004年公开辟布以来,nginx不绝专注于高性能,高并发性和低内存使用。
Web服务器功能之上的其他功能,如负载*衡,缓存,访问和带宽控制,以及与各种应用步伐高效集成的能力,有助于使nginx成为现代网站架构的不错选择。
目前,nginx是互联网上第二大最受欢迎的开源Web服务器。
14.1。为什么高并发性很重要?

现在,互联网如此广泛和无处不在,很难想象它不是十年前我们所知道的那样。从简单的HTML天生可点击文本,基于NCSA,然后是Apache Web服务器,到全球凌驾20亿用户使用的永远在线的通信媒体,它已经有了很大的发展。随着永久毗连的PC,移动装备和最*的*板电脑的激增,互联网领域正在迅速变化,整个经济已经成为数字连线。在线服务变得更加精细,显着偏向即时可用的实时信息和娱乐。运行在线业务的安全方面也发生了巨大变化。因此,网站现在比以前复杂得多,并且通常需要更多的工程努力才能具有结实性和可扩展性。
网站架构师面临的最大挑战之一就是并发。自Web服务开始以来,并发水*不绝在不断增长。一个流行的网站服务数十万甚至数百万同时用户并不罕见。十年前,并发的主要原因是缓慢的客户端 - 具有ADSL或拨号毗连的用户。现在,并发性是由移动客户端和较新的应用步伐体系布局的组合引起的,这些体系布局通常基于维护长期毗连,该毗连允许客户端使用新闻,推文,朋友订阅源等举行更新。另一个有助于提高并发性的重要因素是现代浏览器的行为改变,它可以打开四到六个同时毗连到网站的毗连,以提高页面加载速度。
为了说明慢客户端的题目,想象一个简单的基于Apache的Web服务器,它产生一个相对较短的100 KB响应 - 一个带有文本或图像的网页。天生或检索此页面只需几分之一秒,但需要10秒才能将其传输到带宽为80 kbps(10 KB / s)的客户端。从本质上讲,Web服务器会相对快速地提取100 KB的内容,然后在开释毗连之前,它将忙于将内容缓慢地发送到客户端10秒钟。现在假设您有1,000个同时毗连的客户,他们请求了类似的内容。如果每个客户端仅分配1 MB的额外内存,则会产生1000 MB(约1 GB)的额外内存,专门用于为1000个客户端提供100 KB的内容。实际上,基于Apache的典型Web服务器通常为每个毗连分配凌驾1 MB的额外内存,令人遗憾的是,几十kbps仍然是移动通信的有效速度。虽然在某种程度上通过增加操作系统内核套接字缓冲区的大小来改善向慢速客户端发送内容的环境,但这不是办理该题目的一般方法,并且可能具有不良副作用。
对于长期毗连,处理并发性的题目更加显着,由于为了避免与建立新HTTP毗连相关联的延迟,客户端将保持毗连,并且对于每个毗连的客户端,Web服务器分配了一定量的内存。
因此,为了处理与增长的受众相关的增加的工作量以及因此更高的并发水* - 并且可以或许持续这样做 - 网站应该基于许多非常有效的构建块。虽然硬件(CPU,内存,磁盘),网络容量,应用步伐和数据存储架构等方程式的其他部分显然很重要,但是在Web服务器软件中,客户端毗连被继承和处理。因此,Web服务器应该可以或许随着每秒同时毗连和请求数目的增加而非线性地扩展。
Apache不合适吗?

Apache,这种网络服务器软件在很大程度上仍然主宰着互联网,它的根源在于20世纪90年代初。最初,它的架构与当时存在的操作系统和硬件相匹配,但也与互联网状态相匹配,此中网站通常是运行单个Apache实例的独立物理服务器。到了2000年代初,很显着,无法轻松复制独立的Web服务器模型以满足不断增长的Web服务的需求。尽管Apache为未来的开辟提供了坚实的基础,但它的架构是为每个新毗连天生自己的副本,这不得当网站的非线性可伸缩性。最终,Apache成为了一个通用的Web服务器,专注于拥有许多不同的功能,各种第三方扩展,以及几乎任何类型的Web应用步伐开辟的广泛实用性。然而,没有任何代价,在单个软件中拥有如此丰富和通用的工具组合的缺点是可扩展性较差,由于每个毗连的CPU和内存使用量增加。
因此,当服务器硬件,操作系统和网络资源不再成为网站增长的主要限定时,全球的Web开辟职员开始寻找更有效的运行Web服务器的方法。大约十年前,着名软件工程师Daniel Kegel宣称“现在是网络服务器同时处理一万个客户端的时候了”,并预测了我们现在称之为互联网云服务的东西。凯格尔的C10K清单激发了许多尝试来办理网络服务器优化题目,同时处理大量客户端,而nginx成为最乐成的客户之一。
旨在办理10,000个同时毗连的C10K题目,nginx在编写时考虑了不同的体系布局 - 一个更得当同时毗连数和每秒请求数的非线性可伸缩性。 nginx是基于事件的,因此它不遵循Apache为每个网页请求天生新进程或线程的风格。最终效果是,纵然负载增加,内存和CPU使用仍然可以管理。 nginx现在可以在具有典型硬件的服务器上提供数万个并发毗连。
当nginx的第一个版本发布时,它意味着与Apache一起部署,使得静态内容(如HTML,CSS,JavaScript和图像)由nginx处理,以卸载基于Apache的应用步伐服务器的并发和延迟处理。在开辟过程中,nginx通过使用FastCGI,uswgi或SCGI协议以及分布式内存对象缓存系统(如memcached)增加了与应用步伐的集成。还添加了其他有用的功能,例如具有负载*衡和缓存的反向代理。这些附加功能使nginx成为有效的工具组合,可构建可扩展的Web基础架构。
2012年2月,Apache 2.4.x分支向公众发布。虽然最新版本的Apache增加了新的多处理核心模块和新的代理模块,旨在增强可扩展性和性能,但现在判定它的性能,并发性和资源使用率是否与纯事件相称或更好还为时尚早。驱动的Web服务器。不外,看看Apache应用步伐服务器在新版本中的扩展性能会更好,由于它可能会缓解后端方面的瓶颈,这在典型的nginx-plus-Apache Web设置中仍然没有得到办理。
使用nginx有更多优势吗?

以高性能和高效率处理高并发性始终是部署nginx的关键优势。但是,现在有更多有趣的好处。
在过去几年中,Web架构师已经继承了将其应用步伐基础布局与Web服务器分离和分离的想法。然而,以前以LAMP(Linux,Apache,MySQL,PHP,Python或Perl)为基础的网站形式,现在可能不仅仅是一个基于LEMP的(E'代表'引擎x')但是,越来越多的做法是将Web服务器推向基础办法的边缘,并以不同的方式围绕它集成雷同或经过改进的应用步伐和数据库工具集。
nginx非常得当这一点,由于它提供了方便卸载并发,延迟处理,SSL(安全套接字层),静态内容,压缩和缓存,毗连和请求限定,甚至来自应用步伐的HTTP媒体流所需的关键功能层到更有效的边缘Web服务器层。它还允许直接与memcached / Redis或其他“NoSQL”办理方案集成,以在为大量并发用户提供服务时提高性能。
随着最*开辟套件和编程语言的广泛使用,越来越多的公司正在改变他们的应用步伐开辟和部署习惯。 nginx已成为这些不断变化的范例中最重要的组成部分之一,它已经帮助许多公司在预算范围内快速启动和开辟其Web服务。
nginx的第一行是在2002年编写的。2004年,它根据双条款BSD许可证向公众发布。从那时起,nginx用户的数目不绝在增长,提供想法,并提交对整个社区非常有帮助和有益的错误报告,建媾和观察。
nginx代码库是原创的,完满是用C编程语言从头开始编写的。 nginx已经移植到许多架构和操作系统,包括Linux,FreeBSD,Solaris,Mac OS X,AIX和Microsoft Windows。 nginx有自己的库,其尺度模块除了zlib,PCRE和OpenSSL之外不会超出系统的C库,除非zlib,PCRE和OpenSSL可以选择从构建中排除,如果不需要或者由于潜在的许可证冲突。
关于Windows版nginx的几句话。虽然nginx实用于Windows环境,但nginx的Windows版本更像是概念验证而不是功能齐备的端口。 nginx和Windows内核架构存在某些限定,目前这些架构不能很好地交互。 Windows的nginx版本的已知题目包括并发毗连数目少得多,性能下降,没有缓存以及没有带宽监管。面向Windows的nginx的未来版本将更精密地匹配主流功能。
nginx 系列

Nginx-01-聊一聊 nginx
Nginx-01-Nginx 是什么
Nginx-02-为什么使用 Nginx
Nginx-02-Nginx Ubuntu 安装 + windows10 + WSL ubuntu 安装 nginx 实战笔记
Nginx-02-根本使用
Nginx-03-Nginx 项目架构
Nginx-04-Docker Nginx
Nginx-05-nginx 反向代理是什么?windows 下如何设置使用 nginx
Nginx-06-nginx 汇总入门介绍
Nginx R31 doc 官方文档-01-nginx 如何安装
Nginx R31 doc-02-nginx 根本功能
Nginx R31 doc-03-HTTP Load Balancing HTTP 负载均衡
Nginx R31 doc-04-HTTP Health Checks
Nginx R31 doc-05-Dynamic Configuration of Upstreams with the NGINX Plus API 使用 NGINX Plus API 动态设置上游服务器
Nginx R31 doc-06-Accepting the PROXY Protocol
Nginx R31 doc-07-内容缓存
Nginx R31 doc-08-Configuring NGINX and NGINX Plus as a Web Server 设置 NGINX 和 NGINX Plus 作为 Web 服务器
Nginx R31 doc-09-Serving Static Content 静态内容
Nginx R31 doc-10-NGINX Reverse Proxy 反向代理
Nginx R31 doc-11-Compression and Decompression 压缩与解压缩
Nginx R31 doc-12-NGINX SSL Termination 安全加密
Nginx R31 doc-13-Limiting Access to Proxied HTTP Resources 访问限流
Nginx R31 doc-14-Dynamic Denylisting of IP Addresses 动态拒绝IP地点
Nginx R31 doc-15-Live Activity Monitoring 实时活动监控
Nginx R31 doc-16-logging 设置日记
Nginx R31 doc-17-debugging 调试
Nginx R31 doc-18-High Availability Support for NGINX Plus in On-Premises Deployments
Nginx 实战-01-nginx ubuntu 安装笔记
Nginx 实战-01-nginx windows 安装笔记
Nginx 实战-02-nginx proxy_pass 服务代理访问 使用笔记 ubuntu nodejs
Nginx 实战-03-nginx 负载均衡
Nginx 实战-04-nginx 不同的地点访问不同的服务
Nginx 实战-05-nginx 反向代理实现域名到指定的 ip

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表