nginx配置access日志按天生成过程需要先看清适用场景和关键步骤,避免只记结论却忽略实际限制。
在location块下增加以下代码即可,需要注意对应系统环境

在location块中配置if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})") {set $year $1;set $month $2;set $day $3;}#win环境下,路径分隔符要使用,不要会转译错误access_log D:pathnginx-1.20.2logslocation_8080_access_$year-$month-$day.log;#linux环境,正常写路径即可access_log var/logs/location_8080_access_$year-$month-$day.log;在server块下增加以下代码即可,需要注意对应系统环境
if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})") {set $year $1;set $month $2;set $day $3;}#win环境下,路径分隔符要使用,不要会转译错误access_log D:pathnginx-1.20.2logs8080_access_$year-$month-$day.log;#linux环境,正常写路径即可access_log var/logs/8080_access_$year-$month-$day.log;在http块下增加以下代码即可,需要注意对应系统环境
#因为if写法不只能出现在server跟location中,需要定义map解决该问题map $time_iso8601 $logdate {'~^(?<ymd>d{4}-d{2}-d{2})' $ymd;default 'date-not-found';}#win环境下,路径分隔符要使用,不要会转译错误access_log D:pathnginx-1.20.2logshttp_access_$logdate.log;#linux环境,正常写路径即可access_log var/logs/http_access_$logdate.log;注意:日志记录优先级:location>sever>http