我有一个带有自定义日志文件的 nginx 反向代理(取决于主机名)
密码:/var/log/nginx/domain/fqdn.(log|err)
自从一段时间以来(可能是切换到 Ubuntu 23.10 之后),我的日志文件经常是空的。
这是 logrotate 配置
root@rev-proxy:~# cat /etc/logrotate.d/nginx
/var/log/nginx/*/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
在 logrotate 运行之后,nginx 无法再记录到不同的日志文件,直到我重新加载/重新启动/强制 logrotate。
我尝试过用invoke-rc.d nginx rotate >/dev/null 2>&1
来替换invoke-rc.d nginx reload >/dev/null 2>&1
,但没有效果。
最后一个文件的最后一条日志始终位于 00:00 和 00:15 之间。因此我认为这就是 logrotate 轮换日志的时间。
所有日志文件都有www-data:adm
所有者644面具。
有人有想法吗?
谢谢
答案1
检查 /var/log 是否对“其他”用户具有执行权限。
尝试用以下命令替换 postrotate.d 命令
service nginx reload >/dev/null 2>&1