架构图
架构说明
- Nginx启动时会生成两个进程,worker进程和master进程,通过ps -ef|grep nginx可以查看
- 从架构图可以看出,master进程不处理网络请求,主要负责调度worker进程,具体来说就是:加载配置,启动worker进程,非停升级
- 服务器实际处理网络请求和响应的是worker进程,在类unix系统中,nginx可以配置多个worker,每个worker进程可以同时处理数以千计的网络请求,worker配置如下:
- nginx的整个设计是一种模块化设计,其中的worker包含核心模块和功能性模块,核心模块负责维护一个运行循环(run-loop),执行网络请求处理的不同阶段的模块功能,如网络读写,存储读写,内容传输,外出过滤,以及将请求发往上游服务器等。其代码的模块化设计可以使我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器
- nginx具有事件驱动,异步和非阻塞的功能;这个功能是nginx可以获取高性能、高并发的关键因素,同时也得益于对Linux、Solaris及类BSD等操作系统内核中事件通知及I/O性能增强功能的采用,如kqueue、epoll及event ports
核心模块
Nginx的核心模块主要包含:Mail模块,Http模块,事件模块和配置模块,如下图:
总结
nginx的模块化设计,方便用户进行扩展,类似IDEA的插件,当有些功能不满足时,可以通过插件的方式,对nginx模块进行重新编译configure,并带上需要扩展的功能的模块包,然后进行构建make,最后替换sbin目录下的nginx二进制可执行文件即可