%3F.png)
現在、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 ハンドシェイクを実行できるようになります。