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