在 Debian 上用 nginx 时,日志出现“乱码”通常不是 nginx 本身坏了,而是字符编码不一致导致的。下面按常见原因给你梳理一下。
\xE4\xBD\xA0\xE5\xA5\xBDä½ å¥½ 这种“ mojibake ”cat access.log | less
iconv -f GBK -t UTF-8 access.log
⚠️ 重点:
nginx 日志记录的是原始字节流,不会自动做编码转换
所以:
%E4%BD%A0)locale
如果看到:
LANG=C
LC_ALL=
可能影响:
less / cat 显示异常sudo apt install locales
sudo dpkg-reconfigure locales
选择:
en_US.UTF-8
或
zh_CN.UTF-8
$request_body如果你在 nginx 里配置了:
log_format main '$remote_addr - $request_body';
而请求体是:
那日志必然“看起来乱”。
$request_bodyless -r 或 VS Code 打开✅ 统一全链路 UTF-8
✅ 日志只记录必要信息
# 1. 看系统编码
locale
# 2. 看 nginx 编译信息
nginx -V
# 3. 看日志原始字节
hexdump -C access.log | head
如果你愿意,可以把一段乱码日志贴出来,我可以直接告诉你它是:
这样能一步定位。