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优化服务之网页压缩的实现方法
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
centos8安装nginx1.9.1的详细过程
Aug 02 Servers
使用 Apache 反向代理的设置技巧
Jan 18 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
zabbix配置nginx监控的实现
May 25 Servers
Zabbix对Kafka topic积压数据监控的问题(bug优化)
Jul 07 Servers
centos环境下nginx高可用集群的搭建指南
Jul 23 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版(2)
2006/10/09 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
关于Javascript 的 prototype问题。
2007/01/03 Javascript
JavaScript Array扩展实现代码
2009/10/14 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
JS中的BOM应用
2018/02/02 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
python中的变量如何开辟内存
2018/06/26 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
Python如何定义有默认参数的函数
2020/08/10 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
库房管理员岗位职责
2014/03/09 职场文书
推荐信怎么写
2014/05/09 职场文书
节约用水的口号
2014/06/20 职场文书
艾滋病宣传标语
2014/06/25 职场文书
python爬虫--selenium模块
2021/03/31 Python
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
Nginx缓存设置案例详解
2021/09/15 Servers