10.3 Nginx
Nginx介绍
engine X,2002年开发,分为社区版和商业版(nginx plus) 2019年 f5 Networks 6.7亿美元收购nginx Nginx 免费 开源 高性能 http 和反向代理服务器,邮件代理服务器 tcp和udp代理服务器 解决c10k 问题(10k connections) 二次发行版 tengine openresty 安全
Nginx功能介绍
静态的web资源服务器(html,image,js,css,txt等) http/https协议的反向代理 支持fastcgi/uwsgi/scgi等协议反向代理动态请求 四层反向代理 imap4/pop3协议反向代理
基础特性
模块化设计,较好的扩展性 高可靠性 支持热部署:不停机更新配置文件,升级版本,更换日志文件 低内存消耗:1w个keep-alive非活动连接,仅需2.5M内存 事件驱动,aio,mmap,sendfile等
web服务相关的功能
虚拟机主机 支持keep-alive,和管道连接(利用一个连接做多次请求) 访问日志 url rewrite 路径别名 基于ip及用户访问控制 支持速率限制及并发数限制 重新配置和在线升级而无需中断客户的工作工作进程
Nginx主进程
* Nginx 服务器启动时运行的主要进程,它的主要功能是与外界通信和对内部其他进程进程管理 * 读取Nginx配置文件并验证其有效性和正确性 * 建立,绑定和关闭Socket * 按照配置生成,管理和结束工作进程 * 接收外界指令,比如重启,升级,及推出服务器等指令 * 平滑重启 * 平滑升级,失败回滚 * 开启日志文件,获取文件描述符 * 编译和处理Perl脚本
工作进程
* 由主进程生成,生成数量可以通过Nginx配置文件指定,正常情况下生存与主进程的整个生命周期 * 接收客户端请求 * 将请求一次送入各个功能模块进行滤处理 * IO调用,获取相应数据 * 与后端服务器通信,接受后端服务器处理结果 * 数据缓存,访问缓存索引,查询和调用缓存数据 * 发送请求结果,响应客户端请求 * 接收程序指令,比如重启,升级和退出等指令
缓存索引创建及管理进程
* 在nginx启动一段时间后(默认一分钟)有主进程生成,在缓存元数据重建完成就退出 * 根据本地磁盘上的缓存文件在内存中建立索引元数据库, * 负责在索引元数据更新完成后,对元数据库是否过期做出判断
http连接建立和请求处理过程
Nginx启动时,Master进程:加载配置文件
Master进程:初始化监听socket
master:fork出多个worker进程
worker进程,竞争新的连接,获胜方通过三次握手,建立socket连接,并处理请求
nginx架构图
nginx 模块图