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请求参数内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- windows下nginx负载均衡配置(使用nginx配置访问wgcloud的方法)
- 修改宝塔nginx端口(解决宝塔面板nginx/apache防火墙后无法启动)
- linux nginx部署前端项目(nginx部署多前端项目的几种方法)
- nginx把https转为http请求(使用nginx方式实现http转换为https的示例代码)
- nginxdjango部署(详解Django+uwsgi+Nginx上线最佳实战)
- nginx的请求处理(nginx处理http请求实现过程解析)
- nginx 配置强制跳转https(Nginx实现https网站配置代码实例)
- nginx事件模型有几种(Python实现监控Nginx配置文件的不同并发送邮件报警功能示例)
- nginx优化安全设置(nginx优化的六点方法)
- python配合docker(Docker构建python Flask+ nginx+uwsgi容器)
- 宝塔nginx装哪个版本(宝塔面板nginx关闭状态,启动不了解决办法)
- nginx怎么实现反向代理(nginx反向代理时如何保持长连接)
- nginx tomcat集群(Nginx+tomcat负载均衡集群的实现方法)
- linux系统查看nginx系统版本(Linux中Nginx的防盗链和优化的实现代码)
- nginx和apache服务器配置(Apache、Nginx 服务配置服务器端包含SSI)
- nginx配置ip端口访问(Nginx配置80端口访问8080及项目名地址方法解析)
- 冰岛旅游攻略(冰岛旅游攻略及花费)
- 为什么现在年轻人越来越喜欢买衣服(为什么现在年轻人越来越喜欢买衣服穿)
- 怎么做好SEO(怎么做好seo内容优化)
- 冬季钓鱼子线用 长 还是 短(冬季钓鱼子线用)
- 鱼竿 夏钓短,冬钓长 ,一定是这样 认清优缺点在选竿(鱼竿夏钓短冬钓长)
- 鲢鳙钓底还是钓浮 流水的水域应怎样做钓(鲢鳙钓底还是钓浮)
热门推荐
- css实现动画的方法(CSS实现悬停过渡动画三部曲)
- navicatformysql使用视图(Navicat for MySQL的使用教程详解)
- truncate与delete优缺点(秒懂drop、truncate和delete的区别)
- 网站自动备份工作简报(网站数据自动备份方法)
- phpsession登录功能(php实现session共享的实例方法)
- Visual Studio代码缩略图
- mysql添加数据很慢(mysql如何优化插入记录速度)
- navicatformysql怎么激活(一文读懂navicat for mysql基础知识)
- 忘记mysql密码怎么登录(Mysql用户忘记密码及密码过期问题的处理方法)
- 微信小程序css使用技巧(微信小程序 CSS filter滤镜的使用示例详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9