1

我正在开发一个应用程序,每个客户都有自己的个人资料。其中一项功能允许向客户拥有的系统发送 SOAP 请求。目前,与客户网络服务的所有通信都通过一个 IP 地址进行,与应用程序相同。我希望 SOAP 通信有自己的 IP,与应用程序的其余部分分开。

该应用程序是使用UserFrosting框架用PHP编写的,并且很快将托管在amazon aws上。

这样的分离可能吗?这可以在 PHP 级别上完成吗?

此要求背后的原因是允许客户在其防火墙中仅将与 Web 服务相关的 IP 列入白名单。

4

1 回答 1

1

简短的回答是否定的,这不能通过 PHP 完成。

SOAP 方面的 PHP 运行在 OSI 模型 (HTTP) 的应用层上,因此这意味着在使用该层时已经分配了 IP 地址。

https://en.wikipedia.org/wiki/OSI_model

为此,您可以有两个 Web 服务器(Main 和 SOAP),它们在内部 IP 范围内进行通信,但 SOAP 上的请求会在其自己的 WAN 地址上出站,然后您会将其提供给客户。如果您不想走两台服务器的路线,则服务器上的第二张网卡(虚拟/硬件)和 Apache 侦听规则可以实现类似的结果:

https://serverfault.com/questions/511018/how-to-configure-apache-to-run-on-multiple-network-interfaces#511020

另一种方法是使用不同的 TCP 端口与客户端站点进行 SOAP 请求通信。例如,您可以将所有 SOAP 请求发送到端口 8080 而不是 80 上的客户端 WAN IP,并让客户端在其防火墙上放置入站 NAT(网络地址转换),以将从您的 WAN IP 传入的所有流量转换为 TCP 8080 被转换回 TCP 80 以便服务器可以接受请求。如果您的服务器正在侦听该端口,他们将需要将其转换回 TCP 8080。

于 2016-11-27T14:05:19.867 回答