Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,并发能力强,在互联网项目中应用广泛。
运行架构:
Nginx采用Master-worker模式,启动Nginx后,会有一个master进程和多个worker进程。
Master-worker模式,启动Nginx后,在80端口启用Socket服务进行监听,Nginx涉及Master进程和Worker进程
Master主进程原理:
①nginx -t 命令给master进程发送信号,检测配置文件;
②根据配置文件的参数创建,且监控worker进程的数量和状态;
③监听socket(ip:port),接收client发起的请求,默认监听80端口,被动的等待用户发来连接请求(nginx的主进程工作状态);
④接收发送的管理nginx进程的信号,并且将信号通知到worker进程;
⑤若下发reload命令,则读取新配置文件、创建新的worke进程,结束旧的worker进程。
Worker进程原理:
①实际处理client网络请求;
②master根据Nginx.conf决定worker的数量;
③client用户请求到达时,worker之间进程竞争,获胜者和client建立连接且处理用户请求;
④接收用户请求后,若需要代理转发给后端,则后端处理完毕后接收处理结果,再响应给用户;
⑤接收并处理Master发来的进程信号,如启动、重启、重载、停止,即Master负责接收信号,实际进行操作的是worker。
Nginx管理命令
nginx -t #检测Nginx.conf语法
nginx -s reload #重新读取Nginx.conf,是给master进程发信号,重新读取配置信息,导致worker重新生成,因此worker-pid发生变化,但此时master的ID是不变化的,只有restar时才改变
nginx -s stop #停止nginx
nginx #默认直接运行,在当前机器没运行nginx时
# systemctl 管理Nginx
systemctl status nginx #查看状态
systemctl reload nginx #reload nginx,此时worker进程的id号会改变,master进程不会
systemctl restar nginx #整个Nginx进程变化
Nginx热加载方式
Nginx重新加载配置是不需要中断请求的,就能够让配置文件生效;
当master进程收到信号后,会重新加载配置文件,并启动新的worker进程,此时新worker进程在启动后就开始接收新请求;
而老worker在接收到master信号后,不再接收新请求,在以前未处理完的请求处理完成后,退出。