Nginx设置日志打印post请求参数的方法


Posted in Servers onMarch 31, 2021

【前言】

我们项目的短信功能是接第三方,原来对接第三方给我们回执确认请求是get请求我们在排查问题的时候可以通过nginx的日志拿到对方给我们请求的参数;最近我们换了另外一家第三方,新的第三方给我们的确认请求是post,遇到问题排查,发现nginx没有打印具体参数,于是查阅一些资料和运维一起做了实验和线上调整,调整后我们可以拿到请求参数,更方便我们排查问题;

【Nginx设置打印post请求参数】

一、Nginx配置文件(nginx.conf)设置打印post请求参数:在http模块的log_format中增加"dm":$request_body 防止中文乱码,增加 escape=json

log_format main escape=json '{ "@timestamp": "$time_iso8601", '
   '"remote_addr": "$remote_addr",'
   '"costime": "$request_time",'
   '"realtime": "$upstream_response_time",'
   '"status": $status,'
   '"x_forwarded": "$http_x_forwarded_for",'
   '"referer": "$http_referer",'
   '"request": "$request",'
   '"upstr_addr": "$upstream_addr",'
   '"bytes":$body_bytes_sent,'
   '"dm":$request_body,'
   '"agent": "$http_user_agent" }';

   access_log /var/log/nginx/access.log main;

二、设置前后的效果对比

1、发送请求的json格式

{
  "results":[
    {
   "price":{
        "pricePerMessage":0.01,
        "currency":"aaa"
      },
      "messageId":"ff4804ef-6ab6-4abd-984d-ab3b1387e852",
      "to":"385981178",
      "sentAt":"2015-02-12T09:58:20.323+0100",
      "doneAt":"2015-02-12T09:58:20.337+0100",
      "smsCount":1,
      "status":{
        "id":5,
        "groupId":3,
        "groupName":"DELIVERED",
        "name":"DELIVERED_TO_HANDSET",
        "description":"Message delivered to handset"
      },
      "error":{
        "groupId":0,
        "groupName":"OK",
        "id":0,
        "name":"NO_ERROR",
        "description":"No Error",
        "permanent":false
      }
    }
  ]
}

2、设置前post请求,nginx打印的结果,很显然没有将参数打印出来

Nginx设置日志打印post请求参数的方法

3、设置后post请求,nginx打印参数,发现参数虽然打印出来但是有乱码情况

Nginx设置日志打印post请求参数的方法

4、解决乱码

(1)需要在log_format main后加escape=json

(2)nginx的版本需要是1.15.1及以上

(3)满足以上最终打印出的结果

Nginx设置日志打印post请求参数的方法

三、看nginx日志必要性

1、更加全面:它可以记录访问者的ip浏览器以及请求参数等信息比java的请求日志更加全面;

2、请求大时,java程序处理不过来,这时java日志没有多余访问请求,而nginx中有,有利于排查问题,优化系统性能。

【总结】

1、通过日志可以快速定位问题;

2、排查问题时考虑要全面,从多过维度去思考。

到此这篇关于Nginx设置日志打印post请求参数的方法的文章就介绍到这了,更多相关Nginx 日志打印post请求参数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx网站服务如何配置防盗链(推荐)
Mar 31 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
nginx配置虚拟主机的详细步骤
Jul 21 Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 Servers
详解nginx location指令
Jan 18 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
CentOS下安装Jenkins的完整步骤
Apr 07 Servers
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
Apr 07 Servers
tomcat下部署jenkins的方法
May 06 Servers
Nginx 配置 HTTPS的详细过程
May 30 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 Servers
nginx 多个location转发任意请求或访问静态资源文件的实现
nginx简单配置多个server的方法
nginx proxy_cache 缓存配置详解
Nginx搭建rtmp直播服务器实现代码
Mar 31 #Servers
nginx 反向代理之 proxy_pass的实现
Mar 31 #Servers
nginx location中多个if里面proxy_pass的方法
Mar 31 #Servers
nginx配置proxy_pass中url末尾带/与不带/的区别详解
Mar 31 #Servers
You might like
谈谈新手如何学习PHP
2006/12/14 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
Python字符串格式化的方法(两种)
2017/09/19 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
python模拟斗地主发牌
2020/04/22 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
技术负责人任命书
2014/06/05 职场文书
美术专业自荐信
2014/07/07 职场文书
武夷山导游词
2015/02/03 职场文书
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL