nginx日志请求状态(Nginx设置日志打印post请求参数的方法)
nginx日志请求状态
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 proxypass配置(nginx location中多个if里面proxy_pass的方法)
- nginx配置使用环境变量(关于Nginx开启gzip的配置的问题)
- linux下安装nginx常见问题(Linux安装Nginx步骤详解)
- nginx故障处理(详解Nginx启动失败的几种错误处理)
- nginx与tomcat长连接(Windows下使用Nginx+Tomcat做负载均衡的完整步骤)
- nginx查看rewrite日志(Nginx Rewrite使用场景及配置方法解析)
- nginx配置静态资源路径(Mac环境Nginx配置和访问本地静态资源的实现)
- nginx 根据url限流(浅谈Nginx 中的两种限流方式)
- nginx反向代理性能(nginx作grpc的反向代理踩坑总结)
- nginxdjango部署(详解Django+uwsgi+Nginx上线最佳实战)
- nginx日志请求状态(Nginx设置日志打印post请求参数的方法)
- nginx启动报错连接失败(宝塔面板Nginx环境中出现404 Not Found的解决方法)
- 宝塔nginx装哪个版本(宝塔面板nginx关闭状态,启动不了解决办法)
- 怎么查看nginx支持rewrite(nginx里的rewrite跳转的实现)
- nginx和apache(为什么 Nginx 比 Apache 更牛逼)
- zabbix5.0源码安装(nginx的zabbix 5.0安装部署的方法步骤)
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
- 散文 八月再见,九月,我在风中等你(散文八月再见九月)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
热门推荐
- python下划线怎么用(Python3中_下划线和__双下划线的用途和区别)
- dedecms标签调用详解(Dedecms待审核文章在列表页显示的方法)
- python中的数据类型和数字类型(Python数据类型之Number数字操作实例详解)
- nginx状态查询(使用goaccess分析nginx日志的详细方法)
- jquery 增加表格(jquery实现表格无缝滚动)
- vue怎么接收后台的数据(Vue封装全局toast组件的完整实例)
- django学生管理系统搭建(Django实现学员管理系统)
- python中如何清空列表数据(Python批量删除只保留最近几天table的代码实例)
- sql数据库语言的两种使用方式(通过使用正确的search arguments来提高SQL Server数据库的性能)
- C#中TryParse的用法
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9