工作模式
1.nginx的工作模式是多进程的,启动后后台进程包括了一个master进程和多个worker进程运行,以后台守护进程(daemon)常驻内存。
- master:主要用来获取配置,接受请求,向worker发送信号,监控worker和释放worker进程。
- worker:响应用户的请求
2.nginx之间是通过信号来传递信息和控制的。
shuxnhs@shuxnhs-PC:~$ ps aux | grep nginx
root 5120 0.0 0.0 165488 6576 ? Ss 7月10 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 12900 0.0 0.0 165488 4360 ? S 10:23 0:00 nginx: worker process
www-data 12901 0.0 0.0 165488 3420 ? S 10:23 0:00 nginx: worker process
www-data 12902 0.0 0.0 165488 3420 ? S 10:23 0:00 nginx: worker process
www-data 12903 0.0 0.0 165488 3420 ? S 10:23 0:00 nginx: worker process
shuxnhs 22400 0.0 0.0 14660 1072 pts/0 S+ 12:40 0:00 grep nginx
- apache一般使把php当成自己的一个模块来启动的,nginx则是把http请求变量(get,post等)转发给php进程(独立进程),然后与nginx进行通讯——fastcgi方式/fpm方式
- 一般apache编译的php是不能用于nginx。
信号量控制
- 命令
# 查询主进程号
ps aux | grep nginx
# 执行控制
sudo kill -SIGNAL port
2.nginx提供的信号
- TERM . INT :快速关闭
- HUP :超级好用,平滑的重启,不用重新启动服务器就能是使修改后的配置生效,会在当前的worker进程请求结束后重新加载新的配置文件
- QUIT :优雅,会在当前请求结束后再关闭,不会直接粗暴的关闭
- USR1:重读日志,日志分割时有用,重新打开日志文件,也就是nginx.conf中设置的access_log设置的文件,如果的文件不存在,会新建一份新的log
- USR2:平滑升级,升级版本,启动新的主进程
- WINCH:配合USR2使用,同样也是优雅关闭旧的进程
其他命令
# 查看配置文件是否正常
sudo nginx -t
# 查看nginx错误日志(需要在nginx.conf查看日志放置的目录)
tail /var/log/nginx/error.log
# 如果二进制文件存放在系统的bin目录也可以这样
sudo nginx -s stop // 相当于TERM或INT
sudo nginx -s quit // 相当于QUIT
sudo nginx -s reload // 相当于HUP
sudo nginx -s reopen
service nginx start // 启动nginx
service nginx status // 查看nginx运行状态
service nginx start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade