在默认情况下,nginx日志文件存放在/var/log/nginx下,但是当有多个虚拟主机的时候,产生的日志文件将会非常多,在茫茫文件中查看比较费劲。现在通过每个虚拟主机建立一个和域名对应的文件夹来存放,方便备份和迁移。
整体分两部分:
一、修改nginx配置按虚拟主机域名目录存放日志
二、修改logrotate配置中nginx日志处理规则,使其符合新日志存放路径规则
第一部分:修改nginx配置按虚拟主机域名目录存放日志
例如服务器有两个域名(news.promonkey.fun、www.promonkey.fun),则日志记录如下形式:
在news.promonkey.fun虚拟主机配置文件中,记录日志存放,
access_log /var/log/nginx/news.promonkey.fun/access.log main;
error_log /var/log/nginx/news.promonkey.fun/error.log notice;
在www.promonkey.fun虚拟主机配置文件中,记录日志存放,
access_log /var/log/nginx/www.promonkey.fun/access.log main;
error_log /var/log/nginx/www.promonkey.fun/error.log notice;
针对不同虚拟主机建立完日志文件夹及日志文件后,赋予权限nginx.adm (参考默认日志文件权限):
#chown -R nginx.adm /var/log/nginx
第二部分:修改logrotate配置中nginx日志处理规则,使其符合新日志存放路径规则
#cd /etc/logrotate.d/
#vim nginx
默认nignx打包规则,在默认规则下面新增一段新的配置
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /run/nginx.pid ]; then
kill -USR1 cat /run/nginx.pid
fi
endscript
}
新增日志打包规则(注意路径中多了一层)
/var/log/nginx/*/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /run/nginx.pid ]; then
kill -USR1 cat /run/nginx.pid
fi
endscript
}
新增一层规则匹配,其他套用之前的文件配置即可,修改完之后保存配置文件并测试logrotate日志配置是否正确:
#logrotate -d /etc/logrotate.d/nginx
如果配置无误,可以手动运行 logrotate 命令来触发日志轮转:
#logrotate -f /etc/logrotate.d/nginx
至此,修改配置完成。