nginx loggin $ request_body产生奇怪的编码

我有一个nginx服务器,将POST $ request_bodylogging到文件中。 当我发布json到服务器时,它用\ x22replace引号(“)。

我的configuration看起来像这样

server { server_name myServer; listen 8180; log_format logMyServer '$request_body'; location /myServer { access_log /var/log/nginx/request_bodies.log logMyServer; proxy_pass http://127.0.0.1:8000/; break; } } 

以下是我如何生成请求:

 curl -H "Content-Type: application/json" -X POST -d '{"some":{"foo":"bar"}}' localhost:8180/myServer/ 

我的问题是:

  • 什么样的编码是\ x [数字]?
  • 有没有办法可以configuration日志logging,而不是\ x22引号?

\ x [数字]表示hex。 行情甩掉日志分析器(主要是假设它将使用Apache的公共日志格式 ,用引号包围请求,以保持方法,url和版本在一起)。 看起来像有人抱怨报价 ,这( 和terminal逃生注入漏洞一起 )是导致逃跑的原因。 它看起来像修补程序从来没有被修改,让你关掉它。

你需要把它们parsing出来。 您可以用%replace\ x来匹配URL编码,或者只是自己进行hex转换。