Nginx中配置虚拟服务器路径及日志路径

在默认情况下,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

至此,修改配置完成。

发布者

勿忘心安

一念净心花开遍世界!