自由互联 高防服务器Nginx服务器架构设计是怎样的?
一, Nginx 在架构中发挥的作用:
1.网关
---面向客户的总入口。
2.虚拟主机
---一台机器为不同的域名/ip/端口提供服务
3.路由
---使用反向代理,整合后续服务为一个完整业务
4.静态服务器
---mvvm 模式中,用来发布前端 html/css/js/img
5.负载集群
---使用 upstream,负载多个 tomcat
二、Nginx特点
与其他web服务器相比,Nginx特点:
1、速度快
nginx使用预读、连接池、内存池等技术,使得单次HTTP请求速度更快。
2、扩展性好
Nginx的结构是“核心+模块”的结构,Nginx本身就是一个Epool或Kqueue的事件处理和分发架构,后面会讲到模块知识。
3、高可靠性
Nginx的核心由一个任务很轻的管理进程(master进程)和若干工作进程(worker进程)组成。具体的HTTP请求在工作进程内负载均衡,如果某个工作进程异常终止了,管理进程会迅速重启一个新的工作进程接替该进程。
4、低内存占用
一般情况下,10000个非活跃HTTP保活连接仅占用2.5MB内存。ngx_lua每扩展10000个连接也仅占2.xMB内存。
5、高并发能力
部署在万级以上的场合下。
Nginx全异步、非阻塞I/O的思想贯彻在核心、模块以及ngx_lua 模块中,无论是自己实现的模块,还是通过lua实现的脚本代码,都是非阻塞的高速运行。
6、热部署
由于Nginx的管理进程和工作进程是分开设计的,所以能够实现热部署功能。也就是系统不间断的情况下升级可执行程序,更新配置文件,更新日志。
7、开源
三、Nginx 架构设计
高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是
一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。
1.核心模块
核心模块是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动机制、进程管理等核心功能。
2.标准 HTTP 模块
标准 HTTP 模块提供 HTTP 协议解析相关的功能,如:端口配置、网页编码设置、HTTP响应头设置等。
3.可选 HTTP 模块
可选 HTTP 模块主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,如:Flash 多媒体传输、解析 GeoIP 请求、SSL 支持等。
4.邮件服务模块
邮件服务模块主要用于支持 Nginx 的邮件服务,包括对 POP3 协议、IMAP 协议和SMTP 协议的支持。
5.第三方模块
第三方模块是为了扩展 Nginx服务器应用,完成开发者自定义功能,如:Json 支持、Lua支持等。