Logrotate 之后 Nginx 不记录

Logrotate 之后 Nginx 不记录

我有一个带有自定义日志文件的 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

相关内容