Nginx 日志出现乱码,通常不是 Nginx 本身的 bug,而是字符编码不一致或数据本身就不是文本导致的。常见原因如下:
这是最常见原因。
示例:
/log?name=张三
如果“张三”是 GBK 编码,Nginx 原样记录,编辑器用 UTF-8 看就是乱码。
✅ 解决思路:
例如:
$request_body$http_cookie这些内容本身不是给人看的文本。
✅ 建议:
$request_body日志本身是正常的,只是查看方式不对。
LANG 环境✅ 检查方式:
echo $LANG
file access.log
✅ 解决:
less、vim、tail -f如果配置了:
proxy_set_header ...
log_subrequest on;
可能记录到后端返回的异常内容。
LC_ALL✅ 建议:
export LC_ALL=en_US.UTF-8
hexdump -C access.log | head 看是否是二进制$request_body 看是否恢复正常如果你愿意,可以把一段乱码日志贴出来(脱敏后),我可以帮你判断是 GBK / UTF-8 / 二进制 哪种情况。