nginx是多进程,非多线程的,虽然多线程的开销小于多进程,但多线程内存是共享的,需要程序员通过程序去维护内存管理,容易出错。而进程间是互不影响,安全的,当配置了多个worker进程同时工作的时候,假设黑客入侵了一个worker,运维工程师可以直接关闭这个worker,且不会影响到其他worker进程
master进程
相当于公司的老板,用于接收指令,分发给worker进程进行真正的处理。
主要作用
- 读取并验证配置信息;
- 创建绑定关闭套接字;
- 启动终止维护worker进程;
- 热启动热加载(关闭时,只会关闭没有网络请求处理的worker进程,当网络请求处理完成释放后,才会关闭worker进程)
worker进程
相当于公司的员工,真正对接客户端连接的进程
主要作用
- 接收,传入并处理来自客户端的连接;
- 提供反向代理及过滤功能;
- 等等