Nginx

1、Nginx 工作原理

Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。主进程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份运行。

主进程主要完成如下工作:

  • 读取并验正配置信息;

  • 创建、绑定及关闭套接字;

  • 启动、终止及维护worker进程的个数;

  • 无须中止服务而重新配置工作特性;

  • 控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;

  • 重新打开日志文件;

  • 编译嵌入式perl脚本;

worker进程主要完成的任务包括:

  • 接收、传入并处理来自客户端的连接;

  • 提供反向代理及过滤功能;

  • nginx任何能完成的其它任务;

注:如果负载以CPU密集型应用为主,如SSL或压缩应用,则worker数应与CPU数相同如果负载以IO密集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍

2、Nginx 架构

        Nginx的代码是由一个核心和一系列的模块组成, 核心主要用于提供Web Server的基本功能,以及Web和Mail反向代理的功能;还用于启用网络协议,创建必要的运行时环境以及确保不同的模块之间平滑地进行交互。不过,大多跟协议相关的功能和某应用特有的功能都是由nginx的模块实现的。这些功能模块大致可以分为事件模块、阶段性处理器、输出过滤器、变量处理器、协议、upstream和负载均衡几个类别,这些共同组成了nginx的http功能。事件模块主要用于提供OS独立的(不同操作系统的事件机制有所不同)事件通知机制如kqueue或epoll等。协议模块则负责实现nginx通过http、tls/ssl、smtp、pop3以及imap与对应的客户端建立会话。在Nginx内部,进程间的通信是通过模块的pipeline或chain实现的;换句话说,每一个功能或操作都由一个模块来实现。例如,压缩、通过FastCGI或uwsgi协议与upstream服务器通信,以及与memcached建立会话等。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页