![在同一服务器上的虚拟主机之间复制 Web 请求](https://linux22.com/image/588566/%E5%9C%A8%E5%90%8C%E4%B8%80%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%B9%8B%E9%97%B4%E5%A4%8D%E5%88%B6%20Web%20%E8%AF%B7%E6%B1%82.png)
让我们考虑这样的场景:
基于 Apache 的 Web 服务器运行基于 Python 的软件,该软件通过自定义 HTTP 协议从远程设备收集数据。每次远程设备想要提交一些数据时,它都会编写 HTTP 查询并使用地址 A 将数据发布到服务器。A 被实现为启用 SSL 的虚拟主机(基于名称)。
在同一个物理 Web 服务器上,还有另一个虚拟主机,它是生产服务器 A 的开发快照 - 我们称之为 B。并且我希望将提交给 A 的每个查询也复制到 B(只是为了让开发数据库提交更真实的数据),所以基本上:
从:
[Client] ---> A host
到:
[Client] ---> A host
\--> B host
因此我需要复制并发送相同的查询到位于同一物理服务器上的两个虚拟主机。可以丢弃来自 B 主机的回复,只需接收原始查询即可。应将来自 A 主机的回复(如正常情况)发送到原始客户端。
Apache 的 mod_proxy 是解决此类问题的正确方向吗?
答案1
我还没听说过有人尝试用这种方式来镜像流量。
但听起来在 L3/L4 而不是 L7 上处理会更好 - 但这只适用于 UDP 流量 - 因为 TCP/IP 难以与两个同时的目的地进行三次握手。
尝试在应用程序级别而不是使用 Apache 来执行此操作似乎更为明显。