我正在开发一个应用程序,每个客户都有自己的个人资料。其中一项功能允许向客户拥有的系统发送 SOAP 请求。目前,与客户网络服务的所有通信都通过一个 IP 地址进行,与应用程序相同。我希望 SOAP 通信有自己的 IP,与应用程序的其余部分分开。
该应用程序是使用UserFrosting框架用PHP编写的,并且很快将托管在amazon aws上。
这样的分离可能吗?这可以在 PHP 级别上完成吗?
此要求背后的原因是允许客户在其防火墙中仅将与 Web 服务相关的 IP 列入白名单。
我正在开发一个应用程序,每个客户都有自己的个人资料。其中一项功能允许向客户拥有的系统发送 SOAP 请求。目前,与客户网络服务的所有通信都通过一个 IP 地址进行,与应用程序相同。我希望 SOAP 通信有自己的 IP,与应用程序的其余部分分开。
该应用程序是使用UserFrosting框架用PHP编写的,并且很快将托管在amazon aws上。
这样的分离可能吗?这可以在 PHP 级别上完成吗?
此要求背后的原因是允许客户在其防火墙中仅将与 Web 服务相关的 IP 列入白名单。
简短的回答是否定的,这不能通过 PHP 完成。
SOAP 方面的 PHP 运行在 OSI 模型 (HTTP) 的应用层上,因此这意味着在使用该层时已经分配了 IP 地址。
https://en.wikipedia.org/wiki/OSI_model
为此,您可以有两个 Web 服务器(Main 和 SOAP),它们在内部 IP 范围内进行通信,但 SOAP 上的请求会在其自己的 WAN 地址上出站,然后您会将其提供给客户。如果您不想走两台服务器的路线,则服务器上的第二张网卡(虚拟/硬件)和 Apache 侦听规则可以实现类似的结果:
另一种方法是使用不同的 TCP 端口与客户端站点进行 SOAP 请求通信。例如,您可以将所有 SOAP 请求发送到端口 8080 而不是 80 上的客户端 WAN IP,并让客户端在其防火墙上放置入站 NAT(网络地址转换),以将从您的 WAN IP 传入的所有流量转换为 TCP 8080 被转换回 TCP 80 以便服务器可以接受请求。如果您的服务器正在侦听该端口,他们将需要将其转换回 TCP 8080。