nginx 日志时间不对,一般不是 nginx 本身“算错”了,而是时区/系统时间/配置的问题。可以按下面思路排查和解决:
date
如果显示的是 UTC,而你在中国:
Wed Jan 1 02:00:00 UTC 2026
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或(部分系统):
timedatectl set-timezone Asia/Shanghai
改完时区后,nginx 不会自动感知
nginx -s reload
或
systemctl restart nginx
⚠️ 注意:
已写进日志的旧时间不会变,只有新日志生效
容器默认一般是 UTC
docker run -e TZ=Asia/Shanghai nginx
environment:
- TZ=Asia/Shanghai
-v /etc/localtime:/etc/localtime:ro
默认日志格式里时间是:
$time_local
示例:
log_format main '$remote_addr - $time_local "$request"';
如果你想用 ISO 时间(更直观):
$time_iso8601
date -s "2026-01-21 10:00:00"
ntpdate pool.ntp.org
或
timedatectl set-ntp true
date 时间是否正确Asia/Shanghai如果你愿意,可以把下面信息发我,我可以直接帮你定位:
date 输出我可以更精确地告诉你改哪里。