2016-11-27 3 views
1

Ich arbeite an einer App, bei der jeder Kunde sein eigenes Profil hat. Eine der Funktionen ermöglicht das Senden von SOAP-Anforderungen an Systeme, die Kunden gehören. Derzeit läuft die gesamte Kommunikation mit Kunden-Webdiensten über eine einzige IP-Adresse, genau wie die App. Ich möchte, dass die SOAP-Kommunikation eine eigene IP hat, die vom Rest der App getrennt ist.PHP-App, Webdienste und separate IP-Adressen

Die App ist in PHPUserFrosting Framework geschrieben und es wird bald auf amazon aws gehostet werden.

Ist eine solche Trennung möglich? Kann dies auf PHP-Ebene gemacht werden?

Grund für diese Anforderung ist, dass Kunden nur Webservices in ihren Firewalls auf die weiße Liste setzen können.

Antwort

1

Die kurze Antwort ist nein, das kann nicht über PHP getan werden.

PHP in Bezug auf SOAP läuft auf der Anwendungsschicht des OSI-Modells (HTTP), das heißt, eine IP-Adresse ist bereits zugewiesen, wenn diese Schicht verwendet wird.

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

Um dies zu tun, könnten Sie zwei Web-Server (Haupt & SOAP), die auf internem IP-Bereich zu kommunizieren, aber die Anfragen auf SOAP würden Outbound auf seine eigene WAN-Adresse gehen, die Sie dann an den Kunden geben würden, . Wenn Sie wollte nicht die Route der beiden Server gehen, eine zweite Netzwerkkarte (Virtual/Hardware) und Apache Zuhören Regeln auf dem Server ähnliche Ergebnisse erzielen konnte:

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

Ein anderer Weg, dies zu tun, mit Client-Sites kommunizieren, die einen anderen TCP-Port für SOAP-Anforderungen verwenden. Sie könnten beispielsweise alle SOAP-Anforderungen an eine Client-WAN-IP an Port 8080 statt an 80 senden und den Client veranlassen, eine eingehende NAT (Network Address Translation) auf seiner Firewall zu installieren, um den gesamten von Ihrer WAN-IP eingehenden Verkehr von TCP zu konvertieren 8080 soll zurück zu TCP 80 konvertiert werden, damit der Server die Anfrage annehmen kann. Sie müssten diese dann zurück in TCP 8080 konvertieren, wenn Ihr Server diesen Port überwacht.