将所有 HTTP/HTTPS 从服务器转发到另一台服务器

将所有 HTTP/HTTPS 从服务器转发到另一台服务器

我需要将所有流量(HTTP / HTTPs)转发到我的服务器(Digital ocean)到新服务器(AWS负载均衡器),基本上解决方案是使用 nginx 作为以下问题:将我的 http 请求从我的 ip 转发到另一个服务器

但我在想,使用 NAT 或其他类似网络层转发的方式是否可行?

答案1

在网络层转发 http 和 https 流量当然是一种选择,但是使用双重 NAT,您将丢失流量的源 IP 地址。

如果您打算使用基于 IP 地址的 AWS 负载平衡方案,请注意,您的所有流量似乎都来自您的 Digital Ocean IP,并且可能不会发生负载平衡。

应用层转发(使用反向代理)为您提供了以下选项:例如,向具有原始 IP 地址(X-Forwarded-For: IP-address很常见)的请求添加标头,这反过来允许您使用该信息在新服务器或负载均衡器上执行一些有用的操作。

答案2

你绝对可以在网络层做到这一点,遵循以下几点像这样

但是,您只是在 OSI 模型的更深层次上使事情变得比实际需要的更复杂,并且可能会遇到 TCP 握手问题和/或在目标日志中获取正确的 IP 的问题。

除非有令人信服的理由,否则最好只使用 nginx 转发所有数据包。假设您也有 DNS,并且您只是移动到该 DNS 解析的位置,请设置 nginx 进行转发,然后更新您的 DNS,一旦您知道它已正确过期,请关闭 nginx 并将其删除(再次假设您有 DNS 并且您正在移动到其他位置来提供流量)。

相关内容