我计划构建一个Web应用程序,用户可以在其中展示他们的数据。我希望我们的用户能够在自己的网站上展示它,就像cloudapp一样。您可以设置自己的域名,但仍使用应用程序的托管服务。
所以我的服务http://example.com/showoff
,但我希望用户可以选择使用http://showoff.example.net
他们的数据。
我打算用PHP来做,但如果涉及到构建这种服务,我愿意接受建议。
假设您的域是"showoff.com",他们的域是"acme.com"
您有两个基本选项:"showoff.acme.com"或"acme.showoff.com"。我以两种方式都这样做了。
对于"showoff.acme.com":
- 客户需要设置一个指向其 DNS 中 showoff.com 的 CNAME 条目。向客户解释如何做到这一点并非易事,除非您有一个小型的高薪客户群,否则没有多大的商业意义。
- 您将需要配置一个Apache虚拟主机来回答对所有域(而不仅仅是 showoff.com)的所有请求
- 除非为每个客户配置虚拟主机、IP 和证书,否则无法使用 SSL。(痛苦!
对于"acme.showoff.com":
- 您将需要一个通配符 DNS 记录来指向 *.showoff.com 到您的服务器的 IP(这是否容易取决于您的 DNS 提供商);如果您无法执行此操作,则需要为每个客户创建一个 DNS 记录。
- 您需要配置一个 Apache 虚拟主机来响应对 *.showoff.com 的所有请求 。
- 您可以将通配符 SSL 证书用于 *.showoff.com
这两种情况下,在PHP中,您都可以通过$_SERVER['HTTP_HOST']
找到请求的域。您需要根据已识别域的数据库进行检查,以确定要显示的客户数据。
如您所见,大部分工作都是在DNS和Apache中进行的;无论您使用PHP还是其他语言,这并不重要。
他们必须将 DNS 条目指向您的服务器 showoff.usersite.com。您可以从 $_SERVER 变量中读取它,然后就可以了!将另一个域名指向您的网站并尝试:print_R($_SERVER),您将看到指向您的域名。