代码之家  ›  专栏  ›  技术社区  ›  Koen Bok

appengine实例的许多自定义域

  •  7
  • Koen Bok  · 技术社区  · 16 年前

    对于在Appengine上运行的电子商务服务,我们希望为客户提供在其自定义域上运行商店的选项(例如:www.mystore.com而不是www.enstore.com/mystore)。

    从用户的角度来看,我希望他们在首选项屏幕中输入他们想要使用的域名,并告诉他们如何配置他们的DNS。

    我知道你通常如何(通过google应用程序)向appengine实例添加域,但我不确定你是否能自动完成。即使这是可能的,他们都会(数百)列在我们的谷歌应用页面上。

    有人知道这是否可行/有没有好的方法?

    3 回复  |  直到 13 年前
        1
  •  5
  •   Community Mohan Dere    9 年前

    我认为没有一种方法可以“通过编程”将域添加到一个appengine实例中。显然,域只能通过使用您描述的Google应用程序方法添加。这一点在本文中得到了确认: How do i get foo.somedomain.com get handled by myapp.appspot.com/foo on appengine

    唯一让人想到的选项是:

    • HTTP重定向

      许多DNS提供程序支持HTTP重定向。在这种情况下,您的客户可以设置 mystore.com www.mystore.com 重定向到 www.enstore.com/mystore . 这种方法有一些明显的缺点,可能是不可接受的。首先,通过301和302重定向,用户仍将被转发到已注册的appengine url: www.enstore.com/mystore ,它将显示在浏览器中。此外,在301和302重定向之间进行选择会使搜索引擎优化变得棘手,因为您必须了解搜索引擎如何处理这些重定向。例如,当使用301重定向时,大多数搜索引擎不会使用原始URL作为关键字的源。

      除了301和302重定向,一些DNS提供商(如 DNS Made Easy )还提供他们所称的“隐藏iframe重定向”。页面将在隐藏的iframe中呈现,这样用户浏览器中的URL就不会更改。然而,这使得搜索引擎优化更加棘手,它将不允许用户书签内部网页,或参考他们容易。

      如您所见,这个选项并不理想,但在某些情况下它是一个需要考虑的选项。还请注意,目前,使用301重定向的HTTP重定向是 Naked Domain Issue 777 在Appengine问题跟踪器上。

    • 反向代理

      另一种选择是在其他地方设置一个小型服务器,比如 Amazon EC2 Instance 设置一个简单的 reverse proxy . 只要使用Apache和 mod_proxy (或其他各种选择)。这将允许您要求您的客户机设置指向此实例的普通A记录,而ApacheHTTP服务器将充当AppEngine的代理。

      在mod_proxy中设置反向代理的基本配置指令是proxypass。您通常会用一行这样的行来设置它 VirtualHost (对于每个客户端域):

      ProxyPass / http://www.enmystore.com/mystore/

      远程代理的配置可以由后端软件轻松处理。

      这是一个更整洁的解决方案,它给了你足够的控制权——但显然,这些好处有一些成本。首先,托管反向代理需要一定的开销。您还将添加另一个故障点,因此必须将其添加到高可用性计划中。此外,如果您通过SSL提供某些页面,则会变得非常复杂。

        2
  •  2
  •   dar    16 年前

    另一种选择是让每个客户注册Google应用程序,然后将AppEngine应用程序添加到他们的应用程序中。这样他们就可以管理URL了。他们需要使用一个CNAME来实现这一点,因此URL将被限制在类似“store.customer.com”的范围内,您必须在主机头之外支持多租户,但这并不难,因为您已经有了支持多租户的方法。您可能希望自己为前两个客户机进行设置,以便记录设置它的最简单方法。

    Rietveld代码审查应用程序可以这样做,因为您可以将其添加到您的Google应用程序域中。见 http://code.google.com/p/rietveld/wiki/CodeReviewHelp#Using_Code_Reviews_with_Google_Apps 更多细节。

    首选方案可能是通过谷歌解决方案市场提供您的解决方案: http://www.google.com/enterprise/enterprise_marketplace/about.html

        3
  •  0
  •   navotgil    13 年前

    我们做了类似于丹尼尔·瓦萨罗第二个提议的事情。 我们在Heroku云上创建了一个python应用程序 (连接自定义域没有限制)。 此应用程序使用python requests 1.2.0 lib根据请求域从应用程序引擎应用程序获取正确的页面。 你只需要告诉你的客户把你的Heroku应用的网址作为他们的CNAME。 对于裸域,可以始终使用wwwizer