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实现限制某IP短时间访问次数
Mar 31 Servers
nginx对http请求处理的各个阶段详析
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
Nginx安装完成没有生成sbin目录的解决方法
Mar 31 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
keepalived + nginx 实现高可用方案
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
实现“上一页”和“下一页按钮
2006/10/09 PHP
php中rename函数用法分析
2014/11/15 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
php单一接口的实现方法
2015/06/20 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
JQuery魔力之$("tagName")与selector
2012/03/05 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
layui导航栏实现代码
2017/05/19 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
JavaScript如何操作css
2020/10/24 Javascript
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Django实现自定义404,500页面教程
2017/03/26 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
简单了解python列表和元组的区别
2020/05/14 Python
Python中的整除和取模实例
2020/06/03 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
html5菜单折纸效果
2014/04/22 HTML / CSS
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
EJB的几种类型
2012/08/15 面试题
小学生差生评语
2014/12/29 职场文书
学校百日安全活动总结
2015/05/07 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
详解Redis瘦身指南
2021/05/26 Redis
Python如何将list中的string转换为int
2022/07/15 Ruby