通过抓取nginx到后端upstream的request请求和response请求,排查是nginx问题还是后端问题。
做了很多反向代理,坑爹的事情就来了,不管是4xx, 5xx,还是nxx问题,第一就是说是不是你的nginx有问题,之前的解决方法是让对方把请求通过f12 copy as curl复制给我,我手动替换host为upsteam的ip和port在nginx代理所在机器执行一下请求,从而排除是哪里的问题,有时候对方不知道怎么copy as curl, 有一次是遇到post的数据有9M, 复制粘贴是没办法了,最后是写了个脚本来发送请求的,搞的身心疲惫。
tshark(wireshark的cli),我们可以通过此工具抓包,当然tcpdump也可以
tshark host 10.10.2.97 -n -t a -R "http.response||http.request"
比如上面命令,功能是抓取过滤出nginx和10.10.2.97交互的包。然后看看返回的状态码就可以知道是否是nginx的问题。如果压根没看到请求,那肯定是nginx的问题了。。 简单封装一个shell脚本
function dumphttp() {
case $1 in
req)
tshark ip dst $2 -n -t a -R "http.response||http.request"
;;
res)
tshark ip src $2 -n -t a -R "http.response||http.request"
;;
*)
tshark host $1 -n -t a -R "http.response||http.request"
;;
esac
}
dumphttp $1 $2
评论
暂无评论~~