Nginx访问日志自动旋转

时间:2019-09-12 13:34:35

标签: nginx nginx-config

嗨,我正在尝试在Nginx访问日志中应用日志轮换,方法是在文件名中添加日期,然后由logorate.d处理。

我应用了在这里找到的相同(或相似)配置: https://www.cambus.net/log-rotation-directly-within-nginx-configuration-file/

或此SO线程中提出的解决方案:

Include date in nginx log file name

我最后的尝试是这种配置:

http{
.....
 map $time_iso8601 $year {
    default             'date';
    '~^(?<yyyy>\d{4})-'     $yyyy;
    }
    map $time_iso8601 $month {
        default             'not';
        '~^\d{4}-(?<mm>\d{2})-'     $mm;
    }
    map $time_iso8601 $day {
        default             'found';
        '~^\d{4}-\d{2}-(?<dd>\d{2})'    $dd;
    }
    map $time_iso8601 $logfile_date {
        default                         'date-not-found';
        '~^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})'    $year-$month-$day;
    }


    access_log /var/log/nginx/access-$logfile_date.log main;


....
}

没有错误,nginx启动并且可以正常工作,但是未创建访问日志。

使用诸如access.log或accesstest.log之类的简单名称即可,并且会创建和更新日志。

我正在Centos上通过podman容器运行nginx,基本映像是nginx:1.15.12-alpine

在测试中,我似乎无法使用变量作为名称的一部分,例如,我确实尝试使用$ host作为名称的一部分(access- $ host.log),并且文件也没有创建。 任何人都知道可能是什么问题?。

更新 我确实更改了docker镜像以查看是否与我使用的镜像有关,并且我尝试了标签镜像:1.17.3-alpine-perl,但是没有运气。

0 个答案:

没有答案