如何让nginx同时向server1和server2接收和发送数据?

如何让nginx同时向server1和server2接收和发送数据?

我有 nginx 作为反向代理。我想将数据发送到两个服务器,而不仅仅是一个不进行负载平衡的服务器(只将其从端口 80 接收的数据发送到服务器 1,然后再发送到服务器 2)。

Server1 将是一个 Web 服务器,而 server2 用于记录请求。

location /app2/ {
    proxy_bind 127.0.0.2;
    proxy_pass http://example.com/app2/;
}

答案1

这感觉像是一个 XY 问题。您指定 server2 用于日志记录?

我建议使用两台服务器进行网络服务和日志记录,然后设置一些其他进程来提取这些日志(logstash,elasticsearch等)并使时钟与 NTP 保持同步。

如果负载需要,此解决方案可让您使用服务器3、4...进行水平扩展。

答案2

另一种选择是将“拆分”角色移至以太网交换机而不是代理或网络服务器。

如果您拥有以太网交换机的管理员权限,请检查它是否支持 MIRROR 端口(有时称为 MONITOR 端口)。这会将进入/退出物理端口的所有以太网帧克隆到您的 Web 服务器,并在镜像端口上重播它。

连接到该监控端口的将是某种传感器主机,能够转储所有数据包并记录所见内容。有多种软件选项可供选择。

这样做的主要优点是 Web 服务器和代理不知道并且不需要进行任何更改,并且这些主机上也没有负载。

相关内容