高性能

Nginx是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP代理服务,使用C语言开发,因为它的稳定性、丰富的功能集和较低的系统资源消耗而闻名。
特性:

  • C语言编写,高并发,相比Apache,使用更少的资源,支持5w+的并发连接;
  • 采用IO多路复用机制,一个线程处理多个请求,异步非堵塞;
  • 轻量级,代码模块化,根据需要添加编译模块;
  • sendfile工作机制(内核空间直接到内核空间的传输,0拷贝传输模式);

Nginx 工作进程

Nginx启动后会以Daemon的方式在后台运行,有两类进程,一类是Master进程(完成初始化和管理Worker进程),一类是Worker进程(实际工作进程),启动方式有两种:

  • 单进程启动,只有一个进程既充当Master又充当Worker进程;
  • 多进程启动,此时只有一个Master进程,一个或多个Worker进程(接收客户端连接);
    启动过程:
    Nginx的高性能以及常用功能

Nginx模块

Nginx的高性能以及常用功能

  • Handler模块
    完成客户端请求处理,生成响应数据,如:url重写、静态页面请求、记录访问日志等;
  • Filter过滤器模块
    对Handler产生的数据进行修改;
  • Proxy代理类模块
    HTTP Upstream之类的模块,主要与后端服务交互,实现代理服务和负载均衡等;
Handler模块
序号 阶段 描述
1 NGX_HTTP_POST_READ_PHASE 请求头读完成后的阶段
2 NGX_HTTP_SERVER_REWRITE_PHASE Server内请求地址重写
3 NGX_HTTP_FINF_CONFIG_PHASE 配置查找
4 NGX_HTTP_REWRITE_PHASE Location内地址重写
5 NGX_HTTP_POST_REWRITE_PHASE 请求地址重写完成后的阶段
6 NGX_HTTP_PREACCESS_PHASE 访问权限准备检查
7 NGX_HTTP_ACCESS_PHASE 访问权限检查
8 NGX_HTTP_POST_ACCESS_PHASE 访问权限检查之后的阶段
9 NGX_HTTP_TRY_FILES_PHASE 配置项try_files处理
10 NGX_HTTP_CONTENT_PHASE 内容产生
11 NGX_HTTP_LOG_PHASE 日志记录
Filters模块

处理Handler产生的响应内容,进行过滤处理以实现功能增强与性能提升,Header与Body会分别经过两条过滤链:
Nginx的高性能以及常用功能

Nginx常用功能

  • HTTP服务
    动静分离、Web缓存、GZIP压缩、HTTP认证、SSL、URL重写、虚拟主机、HTTP限流
  • 负载均衡
  • 反向代理:HTTP代理、TCP代理;
  • 正向代理
  • 邮件服务
  • 与Lua脚本结合(使用OpenResty):可以实现动态负载均衡、访问(MySql、Redis)、权限过滤等;

相关文章: