在我的工作场所,分配给面向公众的 UAT 服务器的可用 IP 地址已经用完了。因此,我们将所有流量从另一台服务器 IP 地址上的端口 9999 路由到 UAT 服务器上的端口 80。在大多数情况下,这种方法行之有效,但测试 PayPal 等外部服务变得不可能,因为 PayPal 会从回调 URL 中删除端口号,因此面向公众的 UAT 服务器永远无法与支付网关交互。
作为一种解决方法,我建议如下:
购买最便宜的具有唯一 IP 地址的 Digital Ocean 容器。
将所有 UAT 域 dns 指向此容器。
阻止来自 UAT 服务器的除容器之外的所有流量。
设置某种反向代理,将所有流量从 DO 容器路由到 UAT 服务器。
我不知道该怎么做的部分是反向代理部分。我想我需要 Nginx 或 Varnish。但是,此解决方案还需要处理用户会话和文件上传,而 DO 容器仅充当代理而不存储此信息。
这可能吗?如果可以,我该怎么做?我对 DO 容器的操作系统或软件没有偏好,因此欢迎提出任何建议。
请不要告诉我我们应该如何获得另一个 IP 地址,而不是采用这种冗长的解决方案。我很清楚这是过度的,但是目前我们无法购买任何其他 IP 块,所以这只是一种临时措施,直到这种情况发生。
答案1
反向代理是一个很好的解决方案。这样,您可以在一个公共 IP 上拥有数十台服务器。
我对 Digital Ocean 和您的托管环境一无所知,因此我只能建议将代理尽可能靠近应用程序服务器,以避免双倍延迟。
反向代理在大多数配置中都能很好地工作,尽管通常需要在应用程序中进行特殊配置。为了避免出现问题,在应用服务器和代理上映射同名的 URI 会很有帮助(http://proxy.host/uri到http://app.host/uri和喜欢)。Apache httpd 提供了可靠的代理解决方案,请查看手册中的ProxyPass
、、ProxyPassReverse
。ProxyPreserveHost