我是靠谱客的博主 凶狠小笼包,最近开发中收集的这篇文章主要介绍nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在使用nginx记录访问日志时,发现在含有 request_body
的 PUT
, POST
请求时,日志中会含有 x22
x9B
x5C
x09
x08
字符,不利于阅读和处理。

具体 支持 request_body
的http method参见 http1.1定义 9 Method Definitions
和 Payloads of HTTP Request Methods

nginx.conf
默认access_log 配置

log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      '$http_host $upstream_status $upstream_addr $request_time $upstream_response_time';

改成
重点: json_log escape=json

log_format json_log escape=json '{"realip":"$remote_addr","@timestamp":"$time_iso8601","host":"$http_host","request":"$request","req_body":"$request_body","status":"$status","size":$body_bytes_sent,"ua":"$http_user_agent","cookie":"$http_cookie","req_time":"$request_time","uri":"$uri","referer":"$http_referer","xff":"$http_x_forwarded_for","ups_status":"$upstream_status","ups_addr":"$upstream_addr","ups_time":"$upstream_response_time"}';

参考 How to generate a JSON log from nginx?

官方文档ngx_http_log_module.html#log_format
注意, escape
是从 1.11.8
后新增的参数。

如果是老版本的,linux可以考虑使用 shell
命令替换, logstash
可以考虑使用 ruby
处理 ,参考 Optionally support handling of x escape codes

最后

以上就是凶狠小笼包为你收集整理的nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录的全部内容,希望文章能够帮你解决nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部