我正在使用 Django 构建一个 Web 应用程序,除其他功能外,我希望人们使用自己的域名,因此我想告诉他们将所需的 CNAME 记录重定向到我的服务器。如何让我的服务器自动更新 apache 可用和已注册的站点?或者有更简单的解决方案吗?
PS:Tumblr 或 MobileMe 是如何做到的?
谢谢,马克斯
答案1
除非 DNS 区域也由您的服务管理,否则您将无法检测到何时有人将 DNS 条目指向您的服务器(无论是 A 记录、CNAME 还是其他任何内容)。
我建议将 Apache 设置为有一个响应所有域名(未明确列出其他虚拟主机)的虚拟主机,并创建一个 mod_rewrite 映射规则以将域映射到服务器上的特定目录,即从或http://some.domain.tld/
提供服务。/var/www/some.domain.tld/
/home/some.domain.tld
这样,就不需要为每个新域更改 Apache 配置,只需确保目录存在即可。您可以使用智能 404 处理程序自动执行此操作,该处理程序会在第一次请求目录时创建目录并将浏览器重定向回来 - 但请注意不要以这种方式执行此操作,因为它仍然会正确响应其他 404 错误,并确保它正确清理其输入,这样它就不会被用于 DoS 攻击或创建使其他攻击更容易的结构。
答案2
您的应用程序可以根据发送到应用程序的主机标头检测要求它为哪个域提供服务(如有必要,告诉前端网络服务器传递标头),然后您可以执行任何需要特定于域的操作。