对于我们在AppEngine上运行的电子商务服务,我们希望为客户提供在其自定义域上运行商店的选项(例如:www.mystore.com而不是www.enstore.com/mystore).
从用户的角度来看,我希望他们在偏好设置屏幕中输入他们想要使用的域名,并告诉他们如何配置他们的DNS.
我知道您通常如何将域添加到AppEngine实例(通过Google Apps),但我不确定您是否可以将其自动化.即使有可能,我们的谷歌应用程序页面上也会列出所有(数百个).
任何人都知道这是否可行/是否有一个好方法吗?
我不认为有一种方法可以"以编程方式"将域添加到AppEngine实例中.显然,只能使用您描述的Google Apps方法添加域名.这个SO帖子证实了这一点:我如何通过myapp.appspot.com/foo在appengine上处理foo.somedomain.com
我想到的唯一选择如下:
HTTP重定向
许多DNS提供程序都支持HTTP重定向.在这种情况下,您的客户端将能够设置mystore.com和www.mystore.com重定向到www.enstore.com/mystore.这种方法有一些明显的缺点,可能是不可接受的.首先,使用301和302重定向,用户仍将被转发到已注册的AppEngine URL:,www.enstore.com/mystore它将显示在他们的浏览器中.此外,在301和302重定向之间进行选择可能会使SEO变得棘手,因为您必须了解搜索引擎如何使用这些重定向.例如,当您使用301重定向时,大多数搜索引擎都不会将原始URL用作关键字的来源.
除了301和302重定向之外,一些DNS提供商(如DNS Made Easy)也提供了他们所谓的"蒙面隐藏式iframe重定向".该页面将在隐藏的iframe内呈现,因此URL不会在用户的浏览器中更改.然而,这使得搜索引擎优化更加棘手,它不允许用户为内部页面添加书签或轻松引用它们.
如您所见,此选项不太理想,但在某些情况下,这是一个需要考虑的选项.另请注意,目前,使用301重定向的HTTP重定向是AppEngine问题跟踪器上Naked Domain Issue 777的建议解决方法.
反向代理
另一种选择可能是在其他地方设置一个小型服务器,如小型Amazon EC2实例,并设置一个简单的反向代理.只需使用Apache和mod_proxy(或其他各种替代方法),您就可以非常轻松地进行设置.这将允许您要求您的客户端设置指向此实例的正常A记录,而Apache HTTP服务器将充当您的AppEngine的代理.
在mod_proxy中设置反向代理的基本配置指令是ProxyPass.您通常会为每个VirtualHost(每个客户端域)设置一行这样的行:
ProxyPass / http://www.enmystore.com/mystore/
您的后端软件可以轻松处理远程代理的配置.
这是一个更简洁的解决方案,可以为您提供充分的控制 - 但显然有一些成本可以带来这些好处.首先,托管反向代理需要花费.您还将添加另一个故障点,因此您必须将其添加到高可用性计划中.此外,如果您通过SSL提供某些页面,它可能会变得非常复杂.
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |