Ngnix ヘルプ - Nginix を使用した複数の VM (単一のパブリック IP を持つ ESXi)?

Ngnix ヘルプ - Nginix を使用した複数の VM (単一のパブリック IP を持つ ESXi)?

現在、Nginx について理解しようとしているところなので、ガイダンスが必要です。これは私にとってまったく新しいものなので、すでに回答されている場合はご容赦ください (最初に検索しました)。

シナリオ: Seafile サーバー (cloud.example.com) と Zammand サーバー (support.example.com) の両方が Ubuntu VM (それぞれ 1 つの VM) 上にあり、Certbot で SSL 化されています。明らかに、どちらかを SSL 化して実行できますが、どちらもポート 443 を使用しているため、Ngnix を適切に使用しないと問題が発生します。

最初の質問は、URL リクエストを他の VM に渡す Ngnix 専用の別の VM を用意できるか、それとも両方で Ngnix / SSL を使用するには Seafile と Zammand の両方を同じサーバー上にインストールする必要があるかということです (現時点ではテストのために両方を 1 つの VM にインストールしています)。

単一のサーバーから実行する場合 (Seafile と Zammand の両方がインストールされている - それぞれ独自の VM にインストールすることをお勧めします)、"/etc/nginx/sites-available/default" を編集してそこにルーティング パスを追加するだけでよいと思いますか? 現在、Seafile、Zammand、default の 3 つの "sites-available" があります。現在 "seafile" である "sites-active" があることがわかります。したがって、cloud.example.com と support.example.com の両方が seafile (cloud.example.com) にルーティングされます。

それとも、私はこれを完全に間違って見ているのでしょうか? 建設的なアドバイスがあれば歓迎します! あまり明確に説明していなかったら申し訳ありません。

答え1

最善策は、3 番目の VM を作成し、そこに nginx を設定することです。既存の VM のいずれかに設定することもできます。

それが完了したら、nginx を設定して、複数の「server」エントリを使用する必要があります。各エントリは、サービスを提供するドメインごとに 1 つずつで、異なるバックエンドに転送されます。

ウェブ上には、その方法に関するさまざまなチュートリアルが多数あります。

答え2

つまり、2 つの別個の独立したサーバーがあるということですね? これが本当であれば、SNI 検査などを使用して、接続をプロキシするホストを決定する必要があります。これは、nginx 1.11.5 以降では SSL 接続を終了せずに実行できますngx_stream_ssl_preread_module

プロキシの背後にあるリモート システムにデータを送信できるように、ProxyPass ディレクティブを構成する必要があります。次に、すべてのクエリが最初に Nginx ホストを通過するように、Nginx ホストがインターネット上にあることを確認します。

SNI 検査と TCP ストリーム プロキシを使用すると、リモート サーバーはすべての SSL 接続を直接処理し、nginx は 1 つの IP エンドポイントからのトラフィックをプロキシするだけです。

これもチェックしてみてください:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

TCP ストリーム プロキシを使用する場合の SNI 検査に具体的に対処します。http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.htmlSNI は、ハンドシェイクが実際に処理される前の TLS ハンドシェイク中に含まれるため、nginx はトラフィックを適切なエンドポイントに送信し、そのエンドポイントが実際に TLS ハンドシェイクを実行できるようになります。

関連情報