• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Nginx设置日志打印post请求参数的方法

    【前言】

            我们项目的短信功能是接第三方,原来对接第三方给我们回执确认请求是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打印的结果,很显然没有将参数打印出来

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

                      4、解决乱码

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

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

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

               三、看nginx日志必要性

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

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

    【总结】

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

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

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

    上一篇:nginx基于域名,端口,不同IP的虚拟主机设置的实现
    下一篇:详解使用阿里云镜像仓库构建国外Docker镜像
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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