nginx 日志出现乱码,通常不是 nginx 本身的问题,而是字符编码不一致或终端/查看方式不对导致的。下面按常见原因给你梳理一下,并给出排查和解决办法。
比如:
✅ 表现:
?????䏿–‡ 这种“伪乱码”✅ 解决:
chcp 65001比如:
✅ nginx 日志里会看到:
/%E4%B8%AD%E6%96%87
或乱码字符
✅ 这是正常现象
✅ 解决:
urlencode%XX 形式你看到的是:
✅ 原因:
✅ 解决:
charset utf-8;
比如:
$request_body✅ 表现:
^@、\x00✅ 解决:
log_format main '$remote_addr $request';
服务器 locale 不是 UTF‑8
✅ 检查:
locale
✅ 推荐:
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
file access.log
less access.log
vim access.log
nginx -T | grep log_format
echo $LANG
nginx 日志:
GET /%E4%B8%AD%E6%96%87 HTTP/1.1
✅ 实际是:
GET /中文 HTTP/1.1
这是 URL 编码,不是乱码。
nginx 日志乱码 90% 是“UTF‑8 vs GBK / 查看方式问题”,不是 nginx 写错了。
如果你愿意,可以把具体乱码截图或日志片段贴出来,我可以直接帮你判断是哪一种情况。