nginx acess.log 日志文件全是 16 进制怎么解决

2021-04-11 18:03:47 +08:00
 azalon

log_format main escape=json '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

看网上用了 escape=json 转为 json 格式,但是还是没有用,很烦。 日志这个鬼样子,查错都查不了。

172.96.241.213 - [11/Apr/2021:17:53:47 +0800] "\u0016\u0003\u0001\u0002\u0000\u0001\u0000\u0001ü\u0003\u0003O\u0012~Z\f¶Ü\u000FGyå2.;®æÕè\t<û=@é-¦\ yL§D ä<97>ð´ªg<9d>6YY×(ÍWT¥þ\u000E2©úû>Y«}]¸Ò1N;\u0000"úú\u0013\u0001\u0013\u0002\u0013\u0003À+À/À,À0̨̩À\u0013À\u0014\u0000<9c>\u0000<9d>\u0000/\u00005\u0000" 400 157 "" "" "" 192.241.210.208 - [11/Apr/2021:17:58:20 +0800] "\u0016\u0003\u0001\u0000<8b>\u0001\u0000\u0000<87>\u0003\u0003<95>\u0011~¨áÀ-<88>l\u0010ô\u0012<97>Ê;\u0013\u0007þ8\u0019X\fT#\u000B1À<9c>8N\u00073\u0000\u0000\u001AÀ/À+À\u0011À\u0007À\u0013À\tÀ\u0014À" 400 157 "" "" "" 193.142.146.84 - [11/Apr/2021:17:59:50 +0800] "GET / HTTP/1.1" 200 612 "" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0" ""

2455 次点击
所在节点    NGINX
2 条回复
ysc3839
2021-04-11 18:34:59 +08:00
你贴的这一段并不是“全是”呀,里面明明有正常数据的。
这种情况应该是客户端把别的协议的数据发了过来,忽略那些无用数据即可。
azalon
2021-04-11 19:39:59 +08:00
@ysc3839 感谢,找到问题原因了,我没有正确开启 ssl,在 Nginx 没有开启 SSL 支持的情况下,Nginx 将 https 连接建立过程中的客户端 hello 报文当作 http 报文处理,暴力的截取了报文中指定位置的十六进制字符串当作了$request 的 http 请求方法、URL 和版本号,所以 access 日志中会出现十六进制字符串。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769902

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX