对于我们在 AppEngine 上运行的电子商务服务,我们希望为客户提供在其自定义域上运行商店的选项(例如:www.mystore.com 而不是 www.enstore.com/mystore)。
从用户的角度来看,我希望他们在首选项屏幕中输入他们想要使用的域名,并告诉他们如何配置他们的 dns。
我知道您通常如何将域添加到 AppEngine 实例(通过 Google Apps),但我不确定您是否可以自动执行此操作。即使有可能,它们也会全部(数百个)列在我们的谷歌应用程序页面上。
有人知道这是否可能/是否有好的方法来做到这一点?
我认为没有一种方法可以“以编程方式”将域添加到 AppEngine 实例。显然,只能使用您描述的 Google Apps 方法添加域。这在这篇 SO 帖子中得到了证实:如何让 foo.somedomain.com 由 appengine 上的 myapp.appspot.com/foo 处理
我想到的唯一选项如下:
-
HTTP 重定向
许多 DNS 提供商都支持 HTTP 重定向。在这种情况下,您的客户将能够设置mystore.com
and www.mystore.com
重定向到www.enstore.com/mystore
。这种方法有一些明显的缺点,可能无法接受。首先,使用 301 和 302 重定向,用户仍将被转发到注册的 AppEngine URL:www.enstore.com/mystore
,它将显示在他们的浏览器中。此外,在 301 和 302 重定向之间进行选择可能会使 SEO 变得棘手,因为您必须了解搜索引擎如何处理这些重定向。例如,当您使用 301 重定向时,大多数搜索引擎不会使用原始 URL 作为关键字来源。
除了 301 和 302 重定向之外,一些 DNS 提供商(例如DNS 变得简单)还提供他们所谓的“屏蔽隐藏 iframe 重定向”。该页面将在隐藏的 iframe 内呈现,因此 URL 在用户浏览器中不会更改。然而,这使得搜索引擎优化变得更加棘手,并且它不允许用户为内部页面添加书签或轻松引用它们。
正如您所看到的,此选项不太理想,但在某些情况下是值得考虑的一种选项。另请注意,目前,使用 301 重定向的 HTTP 重定向是建议的解决方法裸域问题 777在 AppEngine 问题跟踪器上。
-
反向代理
另一种选择可能是在其他地方设置一个小型服务器,例如小型服务器亚马逊 EC2 实例,并设置一个简单的反向代理。您可以非常轻松地进行设置,只需使用 Apache 和模组代理(或各种其他替代方案)。这将允许您要求您的客户端设置指向此实例的普通 A 记录,而 Apache HTTP 服务器将充当您的 AppEngine 的代理。
在 mod_proxy 中设置反向代理的基本配置指令是 ProxyPass。您通常会为每个项目设置一行这样的内容VirtualHost
(对于每个客户端域):
ProxyPass / http://www.enmystore.com/mystore/
远程代理的配置可以通过您的后端软件轻松处理。
这是一个更简洁的解决方案,可以为您提供充足的控制权 - 但这些好处显然需要一些成本。首先,托管反向代理需要费用。您还会添加另一个故障点,因此您必须将其添加到您的高可用性计划中。此外,如果您通过 SSL 提供某些页面,则可能会变得相当复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)