如何屏蔽像cloudapp这样的URL,以便用户可以在“他们的”服务器上炫耀我们的数据


How to mask URL's like cloudapp, so users can showoff our data on "their" server

我计划构建一个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),您将看到指向您的域名。