nginx 简单介绍

a 夏天 提交于 2019-12-03 02:22:50

Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。

然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个WEB服务器有着各自鲜明的特点。

Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。

这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。

俄罗斯的工程师Igor Sysoev,他在为Rambler Media工作期间,使用C语言开发了Nginx。Nginx作为WEB服务器一直为Rambler Media提供出色而又稳定的服务。

然后呢,Igor Sysoev将Nginx代码开源,并且赋予自由软件许可证。

由于:

  • Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
  • 高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊~)
  • Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
  • 这些优秀的设计带来的是极大的稳定性

Nginx的用途

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;

Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

一、Nginx的程序架构:

我们可以观察一下正在运行中的 nginx 服务器。

$ ps -aux | grep nginx
root      15406  0.0  0.2  39484  4988 ?        Ss   Oct30   0:00 nginx: master process /usr/local/nginx/nginx
nobody    15410  0.0  0.4  41356  9652 ?        S    Oct30   0:00 nginx: worker process
nobody    15411  0.0  0.3  39688  7436 ?        S    Oct30   0:00 nginx: cache manager process

master:

  一个master进程:负载加载和分析配置文件、管理worker进程、平滑升级

worker:

  一个或多个worker进程处理并响应用户请求

缓存相关的进程:
  • cache loader:载入缓存对象
  • cache manager:管理缓存对象
nginx特性:
  • 异步、事件驱动和非阻塞
  • 并发请求处理:通过epoll/select
  • 文件IO:高级IO sendfile,异步,mmap
  • nginx模块:高度模块化,但其模块早期不支持DSO机制;近期版本支持动态装载和卸载;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!