私は各顧客に独自のアプリケーションインスタンスを提供する小規模なSaaSを持っています。各アプリケーションインスタンスには次のようなDNSがあります。会社.example.com など。
顧客(Xとしましょう)が私に尋ねたのは、顧客X.example.com の場合、アプリケーションインスタンスを自分のドメインにマッピングできます。app.his-domain.com のようになります。
私の最初の考えは、次のような CNAME DNS レコードを追加するように依頼することでした。
CNAME: app.his-domain.com -> customerX.example.com
私のサイトで nginx の新しい server_name を追加します:
server { server_name customerX.example.com app.his-domain.com; proxy_pass: https://backend; }
しかし、TLS証明書のせいでそれは機能しません。.example.com サブドメインのみ!
質問:
この DNS マッピングはどのように動作するのでしょうか? 公式用語がわからないため、グーグルで検索することさえ困難です。CNAME のアイデアは、DNS に関する私の限られた経験から生まれたものです。したがって、これはまったくのナンセンスかもしれません...
答え1
CNAME と HTTP リダイレクトを混同しています。CNAME は DNS ルックアップ中に IP に変換するだけですが、クライアントがサーバーへの HTTPS セッションを開始すると、HTTP ヘッダーで元の DNS 名が引き続き使用されます。そのため、NGINX が の証明書を提供しているため、証明書エラーが発生します.example.com
。
この問題を解決するには、クライアントに の証明書を発行するように依頼しapp.his-domain.com
、サイトをリクエストしているクライアントに対して NGINX にこの証明書を提供させるだけですapp.his-domain.com
。
これを修正する別の方法は、サーバー上でリダイレクトをホストすることです。この場合、NGINX はクライアントに 301 Permanently Moved to を通知しますclient.example.com
が、これにはクライアントのブラウザのアドレス バーに表示されるマイナス面がありclient.example.com
、カスタム ドメインを持つことの意味が全体的に失われます。