如何使Apache将某些请求复制到另一个Web服务器?

如何使Apache将某些请求复制到另一个Web服务器?,apache,http,networking,httprequest,traffic,Apache,Http,Networking,Httprequest,Traffic,我有一个运行apache的繁忙web服务器。现在我对某些请求感兴趣,例如: http://myserver1/path1/somepage1.html?xxxxxx http://myserver1/path2/somepage2.html?xxxxxx 我要做的是像这样复制请求,并将它们转发到另一个Web服务器,如: http://myserver2/request_statistic/ 但是原始请求必须像现在一样在myserver1上提供。myserver2仅用于研究目的,因此我希望复制

我有一个运行apache的繁忙web服务器。现在我对某些请求感兴趣,例如:

http://myserver1/path1/somepage1.html?xxxxxx
http://myserver1/path2/somepage2.html?xxxxxx
我要做的是像这样复制请求,并将它们转发到另一个Web服务器,如:

http://myserver2/request_statistic/
但是原始请求必须像现在一样在myserver1上提供。myserver2仅用于研究目的,因此我希望复制的请求头和正文与原始的一样

这能做到吗?怎么做


谢谢。

您的回答会是什么

您可以尝试查看mod_security,它有许多有用的功能,可以使用。。。您的目标是安全/取证还是性能分析

对于性能分析,我发现过去创建更全面的日志格式更有用,它可以捕获响应代码、响应位置头(用于跟踪重定向)、选定的请求头、计时信息等

如果没有使用https,那么由数据包捕获驱动的东西可能会更好地为您服务。我知道Oracle Real User Information(?)(RUI)就是利用这一原理工作的。对于更随意的诊断会话,我经常使用以下tcpdump:

tcpdump -s0 -A -p -nn tcp and port 80
这足以获得完整的请求(和响应),虽然有点混乱,但数据都在那里。您可以使用如下脚本(仅限tcpdumphttp头)稍微清理一下它——这并不完美(特别是在繁忙的服务器上,事情变得更难跟踪)

#/bin/bash
#
#将“tcpdump-s0-A…”的输出传递给此,它将
#仅输出HTTP请求头和响应头。
#
#卡梅隆·克尔
# 2013-02-14
#
grep——行缓冲的-o\
-e$'GET.*\r'\
-e$'POST.*\r'\
-e$'^[A-Z][A-Za-z0-9_-]*:。\r'\
-e$'HTTP/1.1.*\r'\
-e$'^\r$'\
|sed--未缓冲的-e的\r$,'

或者,您可能希望捕获它们(可能与-W、-C或-G选项结合使用),以便稍后进行分析。如果提供了密钥(对Wireshark很有用),这也可以用于https连接,具体取决于使用的密码。

我还没有考虑到响应问题,可能在某个阶段放弃它?我们正在使用请求数据挖掘用户行为,我们希望最大限度地减少对现有系统的修改。
#!/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$,,'