Nginx是什么?
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【Nginx是什么?】 大家好,我是IT修真院上海分院第八期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务三,扩展思考中的知识点——Nginx是什么? 1 背景介绍1.1 web服务器 Nginx 的竞争对手—Apache、Lighttpd、Tomcat、 Jetty、IIS,它们都是 Web 服务器,或者叫做 WWW(World Wide Web)服务器,相应地 也都具备 Web 服务器的基本功能 :基于 REST 架构风格 ,以统一资源描述符(Uniform Resource Identifier,URI)或者统一资源定位符(Uniform Resource Locator,URL)作为沟 通依据,通过 HTTP 为浏览器等客户端程序提供各种网络服务。然而,由于这些 Web 服务器 在设计阶段就受到许多局限,例如当时的互联网用户规模、网络带宽、产品特点等局限,并 且各自的定位与发展方向都不尽相同,使得每一款 Web 服务器的特点与应用场合都很鲜明。 对比: 1.2 web服务器对比 Tomcat 和 Jetty 面向 Java 语言,先天就是重量级的 Web 服务器,它的性能与 Nginx 没 有可比性,这里略过。 IIS 只能在 Windows 操作系统上运行。Windows 作为服务器在稳定性与其他一些性能上 都不如类 UNIX 操作系统,因此,在需要高性能 Web 服务器的场合下, IIS 可能会被“冷落”。 Apache 的发展时期很长,而且是目前毫无争议的世界第一大 Web 服务器。Apache 有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的 年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发 的 Web 服务器。在 Apache 服务器上,如果有数以万计的并发 HTTP 请求同时访问,就会导 致服务器上消耗大量内存,操作系统内核对成百上千的 Apache 进程做进程间切换也会消耗 大量 CPU 资源,并导致 HTTP 请求的平均响应速度降低,这些都决定了 Apache 不可能成为高性能 Web 服务器,这也促使了 Lighttpd 和 Nginx 的出现。 Lighttpd 和 Nginx 一样,都是轻量级、高性能的 Web 服务器,欧美的业界开发者比较钟 爱 Lighttpd,而国内的公司更青睐 Nginx,Lighttpd 使用得比较少。 1.3 为什么选择 Nginx? (1)更快 (2)高扩展性 (3)高可靠性 (4)低内存消耗 (5)单机支持 10 万以上的并发连接 (6)热部署 (7)最自由的 BSD 许可协议 2 知识剖析
反向代理: 反向代理(reverse proxy)方式是指用代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将从上游服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外的表现就是一个Web 服务器。充当反向代理服务器也是Nginx的一种常见用法(反向代理服务器必须能够处理大量并发请求)。 动静分离 由于Nginx 具有“强悍”的高并发高负载能力,因此一般会作为前端的服务器直接向客户端提供静态文件服务,用Apache、Tomcat等服务器来处理动态资源,实现动静分离。 负载均衡 作为代理服务器,一般都需要向上游服务器的集群转发请求。这里的负载均衡是指选择一种策略,尽量把请求平均地分布到每一台上游服务器上。 3 常见问题怎么降低上游服务器的负载? 4 解决方案使用Nginx的反向代理可以降低上游服务器的并发压力。 5 编码实战准备工作:
本地配置两个Tomcat1(端口8080)和Tomcat2(端口8081)
创建test文件,打包成test.war包,添加至Tomcat1(端口8080)和Tomcat2(端口8081)的weapps目录下,运行Tomcat 6 扩展思考(1)Nginx正向代理和反向代理 (2)Nginx中的upstream轮询机制 (3)Nginx如何实现高并发? 7 参考文献《深入理解Nginx:模块开发与架构解析》陶辉 著 8 更多讨论PPT链接?视频链接 更多内容,可以加入IT交流群565734203与大家一起讨论交流 这里是技能树·IT修真院:,初学者转行到互联网的聚集地 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |