嗨,我正在尝试在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,但是没有运气。