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 比 Apache 更牛逼
Mar 31 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
配置nginx 重定向到系统维护页面
Jun 08 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
Nginx反向代理至go-fastdfs案例讲解
Aug 02 Servers
Nginx缓存设置案例详解
Sep 15 Servers
Kubernetes控制节点的部署
Apr 01 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 Servers
nginx设置资源请求目录的方式详解
May 30 Servers
Shell中的单中括号和双中括号的用法详解
Dec 24 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
MySQL 日期时间函数常用总结
2012/06/12 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
javascript中的隐式调用
2018/02/10 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
python实现的各种排序算法代码
2013/03/04 Python
Python中的map、reduce和filter浅析
2014/04/26 Python
浅谈Python 对象内存占用
2016/07/15 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
python二维图制作的实例代码
2020/12/03 Python
税务专业毕业生自荐信
2013/11/10 职场文书
给校长的建议书100字
2014/05/16 职场文书
网络营销策划方案
2014/06/04 职场文书
装修施工安全责任书
2014/07/24 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技