Django Web アプリを同じサーバー上で 2 つの別々のドメインでホストするにはどうすればよいですか?
Apache+mod_wsgi でデプロイされた Django Web アプリケーションがあり、2 つの別個のドメイン (www.mydomain.com と www.otherdomain.com など) を介してアクセスしたいと考えています。両方のドメインは同じデータベースとユーザー アカウントを共有しますが、ドメイン固有の機能 (ほとんどの場合美的、異なるテンプレートの表示、グラフィック、いくつかの追加ツールなど) があります。
各ドメインには独自の SSL 証明書もあります。また、ユーザーがドメイン間でバウンスされる可能性もあります (たとえば、ユーザーは mydomain.com から始めて、otherdomain.com に移動する機能を「有効化」します)。
最初は、Apache conf ファイルの ServerAlias ディレクティブにドメインを追加するだけでよいと考えていました。例えばServerAlias *mydomain.com *otherdomain.com
。ただし、いくつかの問題が発生しています。
これを正しく読んでいる場合、単一の Apache セクションは1 つのドメインの証明書のみをサポートできます (サブドメインのワイルドカード証明書を除く)。したがって、両方のドメインで HTTPS をサポートするには、 my を複製し、別の証明書情報を交換する必要があります。 2 番目のドメイン用。
Cookie を適切に追跡するには、使用しているドメインを設定する必要があり
SESSION_COOKIE_DOMAIN
ますCSRF_COOKIE_DOMAIN
。ただし、これは settings.py ごとに 1 回しか実行できないため、ここで概説するように、重複する settings.py ファイル (たとえば、settings_mydomain.py と settings_otherdomain.py) と重複する django.wsgi ファイルを作成し、それぞれ適切な設定を使用する必要があります。モジュール。デフォルトの設定では、ユーザーがあるドメインから別のドメインにバウンスされた場合、すべての Cookie が失われ、ログインしている場合でもログアウトされます。これを回避する最善の方法がわかりません。ユーザーは Django ビューによってリダイレクトされているため、最初は Cookie をコピーして、古いドメインを新しいドメインに交換できると考えていました。もう 1 つの考えは、Cookie をデータベース テーブルにコピーし、1 回限りのルックアップ ハッシュでインデックスを作成し (たとえば、Django が登録確認を行うのと同じ方法で)、リダイレクトにこのハッシュを含めることです。それらをクライアントに設定します。これらのいずれかが機能しますか?
これら3つの問題に対するより良い解決策はありますか? 私が見落とした他の問題や問題はありますか?