nginxリバースプロキシサーバーのアップストリームSSLの説明が必要です
私はnginxのドキュメントを読んでいます リバースプロキシに関して および 上流のサーバーへのssl接続の保護 ですが、どのssl証明書がどこに行くのかまだ混乱しています。私が見つけた例の多くにはnginxプロキシlocalhostがありますが、私の状況には、異なるサーバー、ポート、および物理的な場所にあるエンドポイントがあります。
Nginxサーバーでいくつかのドメインを解決したいのですが。これらの各ドメインには、現在のサーバーに実際のドメイン名のssl証明書があります。
現在、各サーバーは独自のネットワークロケーションと物理ロケーションで実行されていますが、これらのエンドポイントを管理する単一のポイントが欲しいです。
私の最終結果は次のようになります
client
|
nginx
https://example1.com
https://example2.com
https://example3.com
x.x.x.x
|
-----------------------------------------
| | |
https://example1.com https://example2.com https://example3.com
a.b.c.d:1234 e.f.g.h:5678 i.j.k.l:9012
現在 https://example1.com は、独自のssl証明書がインストールされているa.b.c.d:1234に解決されます。 nginxサーバーがドメインexample1.comにサービスを提供していることをクライアントに示す必要があるので、example1.com sslをフロントランニングnginxサーバーに移動する必要があると思いますか?それを行う場合、安全なアップストリーム接続を維持するためにa.b.c.d:1234でどのssl証明書を使用しますか?
Nginxのドキュメントにはclient.crtとserver.crtとありますが、CAはドメインを使用してこれらを登録します。リバースプロキシの状況でのクライアントとサーバーとは何ですか?私にとってクライアントは、リクエストを行うブラウザです。
どのssl証明書がリバースプロキシのどこに行くのですか?
編集:
プロキシサーバーにURLベースの証明書を配置するだけで、安全な接続があるように見えることはすでに知っています。私が知りたいのは、バックエンドサーバーに配置するssl証明書です。それぞれの証明書を再利用するだけですか?たぶん......だろう example1.com.crt
プロキシサーバーとバックエンドサーバーの両方に移動しますか?
ドメインの証明書は、クライアントが「見る」場所に行く必要があります。したがって、あなたの場合、nginxサーバーのみをインターネットから利用できるようにするには、すべてのパブリック証明書をnginxサーバーに送る必要があります。
バックエンド接続を保護する場合は、それらのサーバーで必要な証明書を使用できます。自己署名したものを使用し、nginxサーバーで証明書チェックを無効にすることもできますが、独自のCAを作成して証明書をバックエンドに配布する方が賢明です。
バックエンドサーバーに「内部」名と一致する内部証明書があることを除いて、構成は描画したとおりのようになります。
client
|
nginx
(https://example1.com)
(https://example1.com)
(https://example1.com)
|
+---------------------------------------+-----------------------------------+
| | |
| | |
https://example1.internal.local/ https://example2.internal.local/ https://example3.internal.local/
a.b.c.d e.f.g.h i.j.k.l
インターネットからバックエンドサーバーにアクセスできる場合は、それらのhttpsポートをファイアウォールで保護して、nginxサーバーのみが接続できるようにすることができます。
クライアントとサーバーに関する質問について:ネットワークでは、クライアントは接続を開始するクライアントです。したがって、設定では、ブラウザはクライアントであり、nginxサーバーは同時にクライアントとサーバーになります。これはブラウザのサーバーですが、バックエンドサーバーのクライアントです。
かなりの可能性があります。ここに2つあります。
クライアントにリバースプロキシとのみ通信させて(1)、nginxが上流サーバーへの接続を処理するか、nginxにクライアントに他のサーバーに接続するように指示させる(2)ため、パブリックIP/DNS /証明書が必要ですそれから、彼ら自身の。
ネットワークレイアウトに応じて、証明書を使用してリバースプロキシとアップストリームサーバー間のトラフィックを暗号化することもできます(おそらくそうする必要があります)。そのためには、すべての上流サーバーの証明書が必要ですが、自己署名することもできます(そうすべきではありません)。
Let's Encryptのようなものを使用している場合、証明書でのSANの生成は今日では非常に簡単なので、通常はオプション1を使用します。