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快速入门教程
Mar 31 Servers
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
Apr 04 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
Nginx 匹配方式
May 15 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
nginx rewrite功能使用场景分析
May 30 Servers
Linux中文件的基本属性介绍
Jun 01 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 函数语法介绍一
2009/06/14 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php四种基础算法代码实例
2013/10/29 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
javascript 数组排序函数
2009/08/20 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
Python单链表的简单实现方法
2014/09/23 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
软件设计的目标是什么
2016/12/04 面试题
查摆问题自我剖析材料
2014/08/18 职场文书
2015年幼师工作总结
2015/04/28 职场文书
摩登时代观后感
2015/06/03 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Python学习之包与模块详解
2022/03/19 Python
关于Redis的主从复制及哨兵问题
2022/06/16 Redis