为特定服务器设置公开的反向代理

在我的工作地点,我们已经用完了可用的IP地址,以便分配给我们面向公众的UAT服务器。 因此,我们将所有stream量从另一个服务器IP地址的端口9999路由到我们的UAT服务器上的端口80。 这在大多数情况下工作正常,但testing外部服务,如贝宝变得不可能,因为贝宝从回叫url中删除端口号,所以我们面向公众的UAT服务器不能与付款网关交互。

作为一个解决方法,我build议如下:

购买具有唯一IP地址的最便宜的Digital Ocean容器。

指向所有UAT域的DNS到这个容器。

阻止除UAT服务器的容器以外的所有stream量。

设置某种反向代理将所有stream量从DO容器路由到UAT服务器。

我不知道怎么做的部分是反向代理部分。 我假设我需要Nginx或Varnish。 但是,该解决scheme需要处理用户会话和file upload,DO容器只能作为代理进行操作,不能存储这些信息。

这可能吗? 如果是的话,我该怎么办呢? 我没有偏好DO容器的操作系统或软件,所以我们欢迎任何build议。

请不要告诉我,我们应该如何获得另一个IP地址,而不是为了这个冗长的解决scheme。 我清楚知道这是过分的,但目前我们不能购买任何其他IP块,所以这是一个临时措施,直到发生这种情况。

反向代理是一个很好的解决scheme。 这样,您可以在一个公共IP上拥有数十台服务器。

我对Digital Ocean和您的主机环境一无所知,所以我只能推荐将代理尽可能靠近应用程序服务器,以避免双重延迟。

逆向代理在大多数configuration中都能正常工作,但在应用程序中经常需要特殊的configuration。 为了避免出现问题,在应用程序服务器和代理( http://proxy.host/uri )上映射相同名称的URI以及http://app.host/uri和likes是很有帮助的。 Apache httpd提供了一个可靠的代理解决scheme,请检查ProxyPassProxyPassReverseProxyPreserveHost