Stay Hungry.Stay Foolish.
tshark分析nginx反向代理http流量

通过抓取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
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
评论

暂无评论~~