Nginx的软件架构
nginx原理架构图
Nginx是 master/worker 模型
一个master进程,可生成一个或多个worker进程,每个worker进程基于事件驱动机制响应客户端请求;
事件驱动机制:epoll(Linux),kqueue(FreeBSD),/dev/poll(Solaris)
消息通知:select,poll,rt signals
支持sendfile,sendfile64
支持AIO,mmap
master的任务:加载配置文件、管理worker进程、平滑升级、……
worker的功能:提供http服务、http代理、fastCGI代理、……
模块类型:
核心模块(对于http服务及邮件服务都是必要的):core module
Standard HTTP modules 标准模块必须装
Optional HTTP modules 可选模块可以选择用还是不用
Mail modules 邮件模块
3rd party modules 第三方模块
用来做什么?
静态资源的web服务器
http服务器的反向代理
nginx可以做正向代理服务器:
代理客户端的请求,自己处理静态资源,如果是动态资源就交给其它应用
nginx可以做反向代理服务器:
代理后端服务器的作用,如果一个客户端把请求发过来,他会完全把请求转发给后端服务器
nginx做反向代理可以隐藏后端服务器的IP;还可以给后端服务器分担压力;在反向代理上还可以做一个负载均衡的功能,但有多个客户端请求时,可以分别发给几台后端服务器