2 つのドメインと 2 つの証明書、1 つのパブリック IP、1 つの nginx サーバー

2 つのドメインと 2 つの証明書、1 つのパブリック IP、1 つの nginx サーバー

なぜこのようなことが起こるのか分からないので、助けていただければ幸いです。次の 2 つのドメインがあります。

  • アルファ
  • beta.com

どちらも同じサーバー IP を指しています:

  • xxxx さん

このサーバーでは単一の nginx を実行しています。ファイアウォールでは、ポート 80 と 443 をこのサーバーの内部 IP に転送しています。

  • 192.168.1.2

両方のドメインには独自の証明書があります。

これら両方のドメインのサーバー構成は次のとおりです。

問題: ここでの問題は、alpha.com にアクセスすると、サーバーが http.s://alpha.com にリダイレクトし、alpha.com のコンテンツを読み込むことです。これまでのところ、問題ありません。ブラウザーで新しいタブを開いて beta.com と入力すると、ブラウザーの URL が http.s://beta.com に変わりますが、alpha.com のコンテンツが読み込まれます。

ブラウザに入力された URL に基づいて各ドメインの適切なディレクトリをサーバーに提供し、https を維持するように nginx に指示するにはどうすればよいでしょうか?

ありがとう。

答え1

両方の仮想ホストがループバック アドレス上の同じポートを指しています。

何を聴いていますかhttp://127.0.0.1:2368

そのサービスを 2 つの異なるポートでリッスンするように構成し、各 nginx vhost を独自の一意のポートにプロキシする必要があります。

答え2

見てこれDigital Ocean のこの投稿。

それは可能ですサーバー名の識別(SNI) これは SSL に比較的最近追加されたものです。以前は、2 つ (またはそれ以上) の異なるドメイン名が同じ IP アドレスを使用して https アクセスを行うことはできませんでした。

答え3

実は、私は自分の間違いに気づきました。ドメインの 1 つで Ghost ブログ プラットフォームを実行し、もう 1 つのドメインで WordPress を実行していました。WordPress サイトの nginx 構成ファイルから次のコードを削除することで、この問題を解決しました。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HOST $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:2368;

参考までに、@MyNameIsBoring が言及したポート 2368 は、Ghost が使用するポートなので、80 と 443 でサーバーするようにリバース プロキシを設定しました。明らかに、これは WordPress では機能しませんが、コードのその部分を削除すると、すべて正常に機能し始めます。

関連情報