1. 问题描述 nginx 在获取post数据时候,如果是中文,则转换成16进制显示在日志文件中,如下图所示。
文章图片
日志格式为: log_format postdata '$remote_addr | $request_body | $resp_body';
此篇文章记录下解决此次问题的过程。
最新版本解决方式 【文档类|解决nginx访问日志记录post数据】适合nginx 1.11.8
以上版本
在nginx 1.11.8
以上版本中log_format
增加了escape=json
参数,在配置日志格式时加上此参数可以不转义变量内容,官方文档-参数说明
日志配置
log_format postdata '$remote_addr | $request_body | $resp_body';
log_format postdata escape=json '$remote_addr | $request_body | $resp_body';
日志输出
文章图片
第一条日志是不加
escape=json
参数后,
log_format
输出的
第二条日志是加上
escape=json
参数后,
log_format
输出的