2016-11-27 12 views
1

私は各顧客が独自のプロフィールを持っているアプリを開発中です。この機能の1つは、顧客が所有するシステムにSOAP要求を送信することができます。 現在、顧客のウェブサービスとのすべての通信は、アプリと同じ1つのIPアドレスを使用します。私は、SOAP通信に独自のIPを持たせ、残りのアプリケーションとは別にしたいと思います。PHPアプリケーション、ウェブサービス、別々のIPアドレス

アプリはUserFrostingフレームワークを使用してPHPで書かれて、それがすぐにアマゾンAWS上でホストされます。

このような分離は可能ですか?これはPHPレベルで行うことができますか?

この要件の背後にある理由は、顧客がファイアウォール内のWebサービス関連IPのみをホワイトリストに登録できるようにするためです。

答えて

1

短い答えはいいえ、これはPHP経由ではできません。

PHPはSOAPに関してOSIモデル(HTTP)のアプリケーションレイヤー上で実行されるため、このレイヤーを使用するときにIPアドレスが既に割り当てられています。

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

これを行うには、内部IP範囲で通信2台のWebサーバ(メイン& SOAP)を持っている可能性がありますがSOAP上の要求はあなたが顧客に与えることになる、それ自身のWANアドレスに発信して行くでしょう。 2台のサーバー、2番目のネットワークカード(/仮想ハードウェア)と、サーバー上のルールを聞くApacheが同様の結果を達成できるのルート降りたくなかった場合:

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

これを行うための別の方法を、 SOAP要求のために異なるTCPポートを使用してクライアントサイトに通信します。たとえば、すべてのSOAP要求をポート8080ではなくポート8080上のクライアントWAN IPに送信し、ファイアウォールにインバウンドNAT(Network Address Translation)を配置して、WAN IPから受信したすべてのトラフィックをTCP 8080をTCP 80に戻すように変換して、サーバーが要求を受け取れるようにします。サーバーがそのポートでリッスンしている場合は、これをTCP 8080に戻す必要があります。