获取HTTP header信息
2017-06-25Linux撒加3918°c
A+ A-在最近做Haproxy--->Varnish--->OpenResty架构配置调整时,发现X-Forwarded-For到OpenResty时IP地址变的不是想要的了,所以对Haproxy和Varnish做了些配置调整,主要是对X-Forwarded-For头部做处理。
为了了解HTTP的数据在传输时候究竟在Haproxy端,Varnish端和OpenResty端HTTP header的信息,所以用了不同的方式来获取http header。可以使用的工具有tcpdump、tshark、justniffer,其中3个工具在HTTP这块的嗅探易用性上justniffer>tshark>tcpdump
3个工具使用的命令及参数分别如下:
1、使用justniffer(需要手动编译安装)
justniffer -i bond0 -a "%request.grep(GET) %request.header"
-i 指定嗅探哪个接口的数据
-a 使用justniffer获取指定的数据 其中%request.grep(GET) %request.header表示请求中匹配GET方法且输出请求头信息
如果需要将请求头和响应头的信息输出可以使用%request.grep(GET) %request.header %response.header
2、使用tshark(wireshark的命令行版本)
tshark -i bond0 -O http -R "http.request and http.request.method==GET" tcp port 80 |grep -v -E 'Frame|Ethernet|Internet Protocol|Transmission Control Protocol'
-i 指定嗅探哪个接口的数据
-O http 仅输出HTTP相关的数据包
-R 使用wireshark的语法来配置过滤条件
tcp port 80使用pcap-filter的格式过滤数据包
3、使用tcpdump
tcpdump -A -vvvv -s 9999 -i bond0 port 8080