ホスト名に基づいてhttpsリクエストを別のホストに転送する方法

ホスト名に基づいてhttpsリクエストを別のホストに転送する方法

私の状況:

私は 3 台の Ubuntu サーバー、1 台の NAT ルーター、3 つのドメイン名、3 つの Apache Web サイトを持っています。2 つのドメインの IP アドレスは、NAT ルーターの WAN IP です。インターネットからのすべての https トラフィックは、サーバー 1 に転送されます。各サーバーには、独自の Web サイト用の独自の証明書があります。

誰かが接続しようとしています:

要求されたホスト名が Web サイト 1 のホスト名である場合、サーバー 1 は Web サイト 1 を表示します。要求されたホスト名が Web サイト 2 または 3 の場合、サーバー 1 は接続をサーバー 2 または 3 に転送します。サーバー 2 または 3 は Web サイト 2 または 3 を表示します。

サーバー 1 にはサーバー 2 または 3 のキーがないことに注意してください。

質問が2つあります。

  1. これは中間者のようなエラーが発生することなく可能ですか。
  2. これが機能するように Apache 設定を編集する方法。

研究:

Google で、https リクエストを別の https ホストに転送する方法を検索しました。ほとんどの回答では、サーバー 1 にはすべての公開証明書とキーがあり、サーバー 2 または 3 用に別の証明書とキーを作成する必要があるとされています (私の場合は自己署名証明書)。ただし、サーバー 1 にサーバー 2 または 3 の秘密キーがあることは望ましくありません。サーバー 1、2、または 3 の公開 IP は同じであるため、サーバー 1 に秘密キーがない可能性があります。

また、異なる証明書を持つ 1 つのサーバーに複数の https 仮想ホストを設定する方法も見つけました。 いいえ、サーバーごとに独自の Web サイトがあるためです。

誰か助けてくれませんか?

答え1

これはApacheのリバースプロキシ機能。サーバー 1 の Apache 構成では、VirtualHostサーバー 2 と 3 のサイトのホスト名と SSL 構成を使用して定義を作成し、ProxyPassサーバー 1 経由でそれらのサーバーへの接続をプロキシするために使用されます。

代替方法としては、3つのサーバーの前でNGINXのようなものを実行し、HTTP/HTTPSトラフィックをNGINXにNATし、SSLターミネーションとリバースプロキシ3 つのサーバーすべてに対して。

関連情報