我正在開發一個應用程序,每個客戶都有自己的配置文件。其中一項功能允許向客戶擁有的系統發送SOAP請求。 目前與客戶Web服務的所有通信都通過一個IP地址,與應用程序相同。我希望SOAP通信擁有自己的IP,與應用程序的其他部分分開。PHP應用程序,Web服務和單獨的IP地址
的應用程序是用PHP 使用框架UserFrosting,它很快就會在亞馬遜AWS託管。
這樣的分離可能嗎?這可以在PHP級別上完成嗎?
此要求背後的原因是允許客戶將其防火牆中僅與web服務相關的IP列入白名單。
我正在開發一個應用程序,每個客戶都有自己的配置文件。其中一項功能允許向客戶擁有的系統發送SOAP請求。 目前與客戶Web服務的所有通信都通過一個IP地址,與應用程序相同。我希望SOAP通信擁有自己的IP,與應用程序的其他部分分開。PHP應用程序,Web服務和單獨的IP地址
的應用程序是用PHP 使用框架UserFrosting,它很快就會在亞馬遜AWS託管。
這樣的分離可能嗎?這可以在PHP級別上完成嗎?
此要求背後的原因是允許客戶將其防火牆中僅與web服務相關的IP列入白名單。
簡短的回答是否定的,這不能通過PHP來完成。
PHP在SOAP方面運行在OSI模型(HTTP)的應用層上,所以這意味着在使用該層時已經分配了IP地址。
https://en.wikipedia.org/wiki/OSI_model
要做到這一點,你可以有兩個Web服務器(主要& SOAP)的內部IP範圍,其溝通,但對SOAP請求將繼續它自己的WAN地址出站,你會然後再給客戶。如果你不想下去兩臺服務器,第二塊網卡(虛擬/硬件)和Apache聆聽您的服務器上的規則可以實現類似的結果的路線:
這樣做的另一種方法,使用不同的TCP端口爲客戶端站點傳達SOAP請求。例如,您可以將所有SOAP請求發送到端口8080上的客戶端WAN IP而不是80端口,並讓客戶端在其防火牆上設置入站NAT(網絡地址轉換),以將來自WAN IP的所有流量從TCP轉換爲TCP 8080被轉換回TCP 80,以便服務器可以接受請求。如果您的服務器正在偵聽該端口,則需要將其轉換回TCP 8080。