简述一下什么是Nginx,它有什么优势和功能?Nginx是如何处理一个HTTP请求的呢?

本文介绍了Nginx,一个以高性能、稳定性和低资源消耗著称的Web服务器,详细阐述了其作为HTTP/HTTPS代理、负载均衡器等功能,以及多进程和异步非阻塞机制在处理高并发请求中的作用。
摘要由CSDN通过智能技术生成
简述一下什么是 Nginx ,它有什么优势和功能?
Nginx 是一个 web 服务器和方向代理服务器,用于 HTTP HTTPS SMTP POP3 IMAP 协议。因
它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
Nginx---Ngine X ,是一款免费的、自由的、开源的、高性能 HTTP 服务器和反向代理服务器;
也是一个 IMAP POP3 SMTP 代理服务器; Nginx 以其高性能、稳定性、丰富的功能、简单的
配置和低资源消耗而闻名。 也就是说 Nginx 本身就可以托管网站(类似于 Tomcat 一样),进行 Http 服务处理,也可以作为
反向代理服务器 、负载均衡器和 HTTP 缓存。
Nginx 解决了服务器的 C10K (就是在一秒之内连接客户端的数目为 10k 1 万)问题。它的设
计不像传统的服务器那样使用线程处理请求,而是一个更加高级的机制 事件驱动机制,是一
种异步事件驱动结构。
优点:
1 )更快 这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,
在高峰期(如有数以万计的并发请求), Nginx 可以比其他 Web 服务器更快地响应请求。
2 )高扩展性,跨平台 Nginx 的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型
且耦合度极低的模块组成。因此,当对某一个模块修复 Bug 或进行升级时,可以专注于模块自身,
无须在意其他。而且在 HTTP 模块中,还设计了 HTTP 过滤器模块:一个正常的 HTTP 模块在处理完请
求后,会有一串 HTTP 过滤器模块对请求的结果进行再处理。这样,当我们开发一个新的 HTTP 模块
时,不但可以使用诸如 HTTP 核心模块、 events 模块、 log 模块等不同层次或者不同类型的模块,还
可以原封不动地复用大量已有的 HTTP 过滤器模块。这种低耦合度的优秀设计,造就了 Nginx 庞大的
第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。 Nginx 的模块都是嵌入
到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。这使得第三方模块一样具
备极其优秀的性能,充分利用 Nginx 的高并发特性,因此,许多高流量的网站都倾向于开发符合自
己业务特性的定制模块。
3 )高可靠性:用于反向代理,宕机的概率微乎其微 高可靠性是我们选择 Nginx 的最基本条件,因
Nginx 的可靠性是大家有目共睹的,很多家高流量网站都在核心服务器上大规模使用 Nginx
Nginx 的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用
模块都非常稳定,每个 worker 进程相对独立, master 进程在 1 worker 进程出错时可以快速
新的 worker 子进程提供服务。
4 )低内存消耗 一般情况下, 10 000 个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗 2.5MB
内存,这是 Nginx 支持高并发连接的基础。
5 )单机支持 10 万以上的并发连接 这是一个非常重要的特性!随着互联网的迅猛发展和互联网用
户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值期顶住 10 万以上并
发请求的 Server ,无疑会得到大家的青睐。理论上, Nginx 支持的并发连接上限取决于内存, 10
远未封顶。当然,能够及时地处理更多的并发请求,是与业务特点紧密相关的。
6 )热部署 master 管理进程与 worker 工作进程的分离设计,使得 Nginx 能够提供热部署功能,即
可以在 7×24 小时不间断服务的前提下,升级 Nginx 的可执行文件。当然,它也支持不停止服务就更
新配置项、更换日志文件等功能。 7 )最自由的 BSD 许可协议 这是 Nginx 可以快速发展的强大动力。 BSD 许可协议不只是允许用户免
费使用 Nginx ,它还允许用户在自己的项目中直接使用或修改 Nginx 源码,然后发布。这吸引了无数
开发者继续为 Nginx 贡献自己的智慧。 以上 7 个特点当然不是 Nginx 的全部,拥有无数个官方功能模
块、第三方功能模块使得 Nginx 能够满足绝大部分应用场景,这些功能模块间可以叠加以实现更加
强大、复杂的功能,有些模块还支持 Nginx Perl Lua 等脚本语言集成工作,大大提高了开发效
率。这些特点促使用户在寻找一个 Web 服务器时更多考虑 Nginx 。 选择 Nginx 的核心理由还是它能
在支持高并发请求的同时保持高效的服务。
Nginx 是如何处理一个 HTTP 请求的呢?
Nginx 是一个高性能的 Web 服务器,能够同时处理大量的并发请求。它结合多进程机制和异步机制 ,异步机制使用的是异步非阻塞方式 ,接下来就给大家介绍一下 Nginx 的多线程机制和异步非阻塞
机制 。
1 、多进程机制
服务器每当收到一个客户端时,就有 服务器主进程 ( master process )生成一个 子进程(worker process )出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。
使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响,同时降低
编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响 ,如果一个
进程发生异常退出时,其它进程正常工作, master 进程则很快启动新的 worker 进程,确保服务
不会中断,从而将风险降到最低。
缺点是操作系统生成一个子进程需要进行 内存复制等操作,在资源和时间上会产生一定的开销。当
有大量请求时,会导致系统性能下降 。
2 、异步非阻塞机制
每个工作进程 使用 异步非阻塞方式 ,可以处理 多个客户端请求 。
当某个 工作进程 接收到客户端的请求以后,调用 IO 进行处理,如果不能立即得到结果,就去 处理 其他请求 (即为 非阻塞 );而 客户端 在此期间也 无需等待响应 ,可以去处理其他事情(为异 步 )。当 IO 返回时,就会通知此 工作进程 ;该进程得到通知,暂时 挂起 当前处理的事务去 响应客户端请求 。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值