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

azalon 1月前 19

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<û[email protected]é-¦\ 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" ""

最新回复 (2)
  • ysc3839 26天前
    引用 2
    你贴的这一段并不是“全是”呀,里面明明有正常数据的。
    这种情况应该是客户端把别的协议的数据发了过来,忽略那些无用数据即可。
  • 楼主 azalon 26天前
    引用 3
    @ysc3839 感谢,找到问题原因了,我没有正确开启 ssl,在 Nginx 没有开启 SSL 支持的情况下,Nginx 将 https 连接建立过程中的客户端 hello 报文当作 http 报文处理,暴力的截取了报文中指定位置的十六进制字符串当作了$request 的 http 请求方法、URL 和版本号,所以 access 日志中会出现十六进制字符串。
  • 游客
    4
返回