1  概述



Nginx (engine x)分为开源和商业版,是单进程响应用户的并发请求,没有线程的概念,特点是有很多模块组成的。处理静态页面时http的10倍效率,可以实现30000的并发进程,http一般是只能达到10000的并发。二次开发版本有Tengine和 OpenResty,官网是http://nginx.org

 本文将介绍nginx的特性,功能和相关模块



2  概念介绍



2.1  nginx架构图

nginx的程序是master/worker结构

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

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

.缓存相关的进程:

cache loader:载入缓存对象

cache manager:管理缓存对象

架构图如下

2.2  nginx特性

.模块化设计,较好的扩展性

.高可靠性

.支持热部署:不停机更新配置文件,升级版本,更换日志文件

.低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需要2.5M内存

.支持event-driven,aio,mmap,sendfile

2.3  nginx功能 

2.3.1  基本功能:

.静态资源的高性能web服务器,处理html,图片,js,css,txt等静态资源

. tcp/udp协议反向代理服务器:实现三个功能,一、负载均衡,相当于调度器,转发数据到后端服务器,实现LVS一样的功能,二、客户端没有直接接触服务器,更加安全。三、缓存,可以加速访问。

. IMAP/POP3/SMTP协议反向代理服务器

. 通用的TCP/ UDP代理服务器

. 结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求

.模块化(非DSO),如zip,SSL模块

2.3.2  nginx web服务相关的功能

1)虚拟主机(server)

2)支持keep-alive和管道连接

3)访问日志(支持基于日志缓冲提高其性能)

4)url rewirte

5)路径别名

6)基于IP及用户的访问控制

7)支持速率限制及并发数限制

8)Memcached的GET 接口

9)重新配置和在线升级而无须中断客户的工作进程,比如升级过程,旧的主进程会被关掉,同时开启一个新版本的主进程。但是,旧的子进程不受影响,会继续处理旧的请求,直到把旧请求处理完成才关掉该旧子进程。此时新版本的主进程会开启新的子进程,用来接收新的请求,实现了平滑过渡。

2.4  nginx模块

.nginx高度模块化,模块表现为各种文件,但其模块早期不支持DSO机制;1.9.11版本支持动态装载和卸载

.模块分类:三大类

a)核心模块:coremodule

b)标准模块:分为三类

1)HTTP 模块:ngx_http_*

             HTTP Core modules 默认功能

             HTTP Optional  modules 需编译时指定

          2)Mail模块ngx_mail_*

3)Stream 模块ngx_stream_*

c)第三方模块