如何最好地将 Django Web 应用程序托管在同一台服务器上,但用于两个不同的域?
我有一个使用 Apache+mod_wsgi 部署的 Django Web 应用程序,我想通过两个单独的域(例如 wwww.mydomain.com 和 www.otherdomain.com)访问它。两个域共享相同的数据库和用户帐户,但具有特定于域的功能(主要是美学,显示不同的模板、图形、一些额外的工具等)。
每个域也有自己的 SSL 证书。用户也有可能在域之间被反弹(例如,他们从 mydomain.com 开始,然后他们“启用”将他们带到 otherdomain.com 的功能)。
起初我认为我所要做的就是将域附加到我的 Apache conf 文件中的 ServerAlias 指令中。例如ServerAlias *mydomain.com *otherdomain.com
。但是,我遇到了一些问题。
如果我没看错的话,一个 Apache 部分只能支持一个域的证书(不包括子域的通配符证书),所以为了在两个域上支持 HTTPS,我需要复制我的,交换不同的证书信息对于第二个域。
为了正确跟踪 cookie,我需要设置
SESSION_COOKIE_DOMAIN
和CSRF_COOKIE_DOMAIN
到正在使用的域。但是,每个 settings.py 只能执行一次,因此此处概述,我需要创建重复的 settings.py 文件(例如 settings_mydomain.py 和 settings_otherdomain.py)以及重复的 django.wsgi 文件,每个文件都使用适当的设置模块。在默认设置下,如果用户从一个域跳到另一个域,他们将丢失所有 cookie,导致他们在登录后被注销。我不确定如何最好地解决这个问题。由于用户被 Django 视图重定向,起初我想我可以复制 cookie,将旧域换成新域。另一个想法是将 cookie 复制到数据库表中,使用一次性查找哈希进行索引(例如,与 Django 进行注册确认的方式相同),并将此哈希包含在重定向中,然后应用程序将使用该哈希来查找 cookie 和将它们设置在客户端中。这些中的任何一个都可以吗?
这三个问题有没有更好的解决方案?还有其他我忽略的问题或问题吗?