我可以使用托管服务上的反向代理将连接重定向到多个 IP,同时维护会话吗?

我可以使用托管服务上的反向代理将连接重定向到多个 IP,同时维护会话吗?

我遇到过这样一种情况,我需要托管自己的 Web 服务器,因为我需要一些自定义软件,包括电话、WebRTC、node.js 等。但是,我将在托管该服务器的城镇和乡村通过光纤线路建立的网络连接不是很可靠(物理上讲 - 容易发生中断 - 很少见,但已经发生过几次了)。

为了解决这个问题,我认为应该让内部服务器通过两个 ISP 和两个不同的物理介质以及两个不同的公共 IP 来访问。域名注册商通常在 DNS 设置中只有一个 IP(A 记录),因此作为一种容错机制,这毫无用处。即使我手动更改域的 A 记录,当其中一个物理连接断开时,传播也需要时间,更不用说 DNS 缓存等了。我想所有这些都是基本的东西。

为了解决所述问题,我可以在托管服务器上使用反向代理,其唯一目的是将给定会话的传入请求重定向到特定 IP 地址,类似于负载平衡中使用的循环方式,尽管从技术上讲它是具有两个不同 IP 的同一台服务器。 DNS A 记录将指向托管服务器。 如果其中一个 ISP 的连接断开,托管服务器将自动仅转发到另一个 IP。

我查看了常见的反向代理服务器(APache、Nginx、Squid),但无法清楚地了解它如何从会话角度管理重定向。也就是说,同一会话中的多个请求被重定向到同一个 IP?名为 Pound 的反向代理服务器似乎提供此类服务,但我也不清楚。

反向代理是否处理会话管理?如果不处理,它如何知道特定请求必须转发到会话中的相同 IP?或者这是否与 TCP 连接有关,而不是与应用程序级会话有关?请注意,在这种反向代理使用中,转发的 IP 不在与代理本身相同的本地网络上,而是完全不同的 ISP 的远程服务器的公共 IP 地址。也许这并不重要,因为在我的情况下远程服务器是相同的,尽管具有不同的 IP 接口和不同的 IP 地址。即使请求来自同一服务器上的两个不同 IP,在同一会话中(由于会话中途一根电缆的物理中断导致),会话管理是否会自行处理?

在继续实施之前,我只需要一些澄清。或者有更好的方法来解决这个问题?我猜很多第三世界国家都会面临这个问题,特别是如果他们想在内部托管 node.js 和相关的新一代服务,而不必太担心这里提出的问题。

在相关主题上,Iptables 目标 NAT 是否可以用作反向代理服务器。这只是一个理论问题,因为我无法在托管共享服务器上设置 IPtables 规则。

相关内容