文档类|解决nginx访问日志记录post数据

1. 问题描述 nginx 在获取post数据时候,如果是中文,则转换成16进制显示在日志文件中,如下图所示。
文档类|解决nginx访问日志记录post数据
文章图片



日志格式为: 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';

日志输出
文档类|解决nginx访问日志记录post数据
文章图片

第一条日志是不加 escape=json 参数后, log_format 输出的
第二条日志是加上 escape=json 参数后, log_format 输出的


    推荐阅读