Nginx的日常维护

检验配置文件

1
/opt/nginx/sbin/nginx -t

1
/opt/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf

如果不使用-c指定配置文件位置,nginx会在其安装目录下找conf/nginx.conf文件

启动:

1
/opt/nginx/sbin/nginx  &

关闭:

1
killall nginx

1
kill -9 'nginx_pid'

平滑重启:

1
kill -HUP `cat /opt/nginx/logs/nginx.pid`

HUP是信号,常用的信号有:

  • QUIT,表处理完当前请求后,关闭进程;
  • HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑的重启Nginx;
  • USR1,用于Nginx的日志切换,也就是重新打开一个日志文件,例如每天要生成一个新的日志文件时,可以使用这个信号来控制;
  • USR2,用于平滑升级可执行程序;
  • WINCH ,从容关闭工作进程。

日志分割:
Nginx没有类似Apache的cronolog日志分割处理的功能,但是我们可以通过Nginx的信号控制功能(USR1)利用脚本来实现日志的自动切割。

1
2
3
4
5
6
7
8
#!/bin/bash
LOGS_PATH="/var/log/nginx"
DATE=$(date +%F)

mv $LOGS_PATH/access.log $LOGS_PATH/access.log.$DATE
mv $LOGS_PATH/error.log $LOGS_PATH/error.log.$DATE

kill -USR1 `cat /opt/nginx/logs/nginx.pid`

先将日志文件按日期重命名,然后通过Nginx的信号“USR1”生成新的日志文件。
给予脚本执行权限,并将脚本放到crontab,每天凌晨自动分割日志:

1
2
chmod +x nginx_logs.sh
echo "0 0 * * * root /root/nginx_logs.sh">>/etc/crontab