我有一个运行apache的繁忙的Web服务器。现在我对某些请求感兴趣,如:
http://myserver1/path1/somepage1.html?xxxxxx
http://myserver1/path2/somepage2.html?xxxxxx
我想要做的是复制这样的请求并将它们转发到另一个网络服务器,如:
http://myserver2/request_statistic/
但原始请求必须像myserver1一样在myserver1上提供。 myserver2仅用于研究目的,因此我希望重复的请求标题和bodys与原始标题一样。
可以这样做吗?怎么样?
谢谢。
答案 0 :(得分:1)
回复在哪里?
您可以尝试查看mod_security,它具有许多有用的功能......是您的目标安全/取证还是性能分析?
对于性能分析,我发现在过去创建更全面的日志记录格式更有用,它可以捕获响应代码,响应位置标头(用于跟踪重定向),选定的请求标头,时序信息,等
如果未使用https,那么您可能会受到数据包捕获驱动的更好的服务。我知道Oracle真实用户信息(?)(RUI)使用该原理。对于更多的休闲诊断会议,我经常得到以下tcpdump:
tcpdump -s0 -A -p -nn tcp and port 80
这足以获得完整的请求(和响应),它有点乱,但数据就在那里。您可以使用脚本清理它,例如以下(tcpdump-http-headers-only) - 它并不完美(特别是在繁忙的服务器上,事情变得越来越难以跟踪)。
#!/bin/bash
#
# Pass in the output of 'tcpdump -s0 -A ...' to this and it will
# output only the HTTP request headers and response headers.
#
# Cameron Kerr <cameron.kerr.nz@gmail.com>
# 2013-02-14
#
grep --line-buffered -o \
-e $'GET .*\r' \
-e $'POST .*\r' \
-e $'^[A-Z][A-Za-z0-9_-]*: .*\r' \
-e $'HTTP/1.1 .*\r' \
-e $'^\r$' \
| sed --unbuffered -e 's,\r$,,'
或者,您可能希望捕获它们(可能与-W,-C或-G选项一起使用)以供以后分析。根据所使用的密码,如果提供密钥,这也可以与https连接一起使用(对Wireshark很有用)