我有一个在线服务,为用户提供公开的个人资料。用户可以在 上注册并查看他们的个人资料www.example.com/users-name
。
我想提供一项高级服务,用户可以通过自己的域名访问此个人资料(网站本身仍由我托管)。因此,如果他们注册了users-custom-domain.com
,他们就可以访问该网站,他们会看到与上述相同的个人资料,以及一些高级功能
需要什么样的基础设施来支持这一点?假设用户必须将他的 DNS 指向我的服务器?如果我将我的产品托管在 Heroku 等云主机上,这能实现吗?每个使用自定义域的用户都会访问孤立的 Web 应用程序吗?例如,如果使用云基础设施,每个“实例”是否应该衍生出一个新的应用程序,或者可以以某种方式共享?
我知道有很多方法可以实现这一点,我只是在寻找想法和最佳实践,因为我不知道从哪里开始(例如 about.me 或 tumblr 如何实现这一点)。
答案1
你需要:
- DNS 将用户的域名转换为您控制的名称或地址。您可以托管该服务并硬编码必要的记录,或者用户可以管理自己的 DNS 并自行设置记录。我建议您在域名上设置一个名称,用户将其记录 CNAME 到该名称;正如 Github 在不得不重新编号时发现的那样,如果您让人们硬编码 IP 地址,事情就会变得一团糟。
- 您的 Web 服务基础架构需要知道响应用户域的请求,以及为其提供哪些内容。通常,这需要用户在其个人资料中执行某些操作,例如“我将向您指向某某域”,然后您在后台自动配置 Web 服务器层以执行正确的操作。
应用程序中的所有内容都可以共享;完全没有必要为每个用户单独启动任何内容。每个提供商的实现是您需要自己弄清楚的事情;有太多的可能性和组合无法为您提供全面的审查。