一、nginx虚拟主机配置
Nginx虚拟主机对应的文件实体就是/usr/local/nginx/nginx.conf文件。
Nginx配置文件分为几段:
worker_processes 1;// 有1个工作的子进程,可以配置,一般设置为CPU数*核数
events { // 一般用于配置nginx连接的特性,如1个worker允许同时建立多少连接
worker_connections 1024; // 指一个子进程最大允许连接1024个连接
}
http {
待补充
}
二、nginx日志管理
2.1 日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
nginx.conf文件中,虽然上面这段话被注释,但缺省启用的日志格式就是main格式,输出到logs/access.log文件中。
nginx支持为每个server定制log。
观察nginx的server段,能看到如下信息:
# access_log logs/host.access.log main;
翻译成中文的意思是:本server访问的日志文件是 logs/host.access.log,日志格式使用的是预定义的main格式。当然nginx支持自定义的其他格式。
什么是main格式:
main格式是预定义的日期格式,main只是它的代号,便于引用。nginx提供的main格式如下:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
2.2 定时任务与日志切割
如果所有的日志都放在一个文件里,根据日志去排查生产问题时会异常的低效;不恰当的日志打印或者是海量的业务访问量,会致使日志文件的大小急剧膨胀最后撑爆磁盘。所以千万不要忽视日常运维中的日志管理。
常用的日志管理策略包含以下几个方面:
- 打印:将程序日志打印到指定的日志文件当中
- 切割:每天在一个固定的时点,通常是0点,对日志文件做切割,对当前的日志文件重命名并移到指定的历史日志文件夹中,其中重命名的方法可以是文件名拼接上日志产生的日期。最后生成一个新的日志文件,并将程序的日志输出指向该新文件
- 清理:启动定时任务,每隔一段时间清理过期日志
脚本编写:
touch log.sh
vim log.sh
# !/bin/bash
# 定义日志文件路径
LOGPATH=/usr/local/nginx/logs/access.log
# 定义存放历史日志文件目录的命名规则
BASEPATH=/usr/local/nginx/logs/$(date -d yesterday +%Y-%m)
mkdir -p $BASEPATH
# 定义日志名的生成规则,指定存放目录
bak=$BASEPATH/access-$(date -d yesterday +%Y-%m-%d-%H%M).log
mv $LOGPATH $bak
touch $LOGPATH
# 重定向nginx日志输出到新建的日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
接下来使用linux系统提供的定时任务工具定时调度log.sh脚本:
crontab -e
# 在打开的文件中输入如下内容,保存退出后会自动执行定时任务
*/1 * * * * sh /usr/local/nginx/logs/log.sh
crontab命令的定时粒度设置参考下图:

网友评论