Google app engine AppEngine实例的许多自定义域

Google app engine AppEngine实例的许多自定义域,google-app-engine,Google App Engine,对于在AppEngine上运行的电子商务服务,我们希望为客户提供在其自定义域上运行商店的选项(例如:www.mystore.com而不是www.enstore.com/mystore) 从用户的角度来看,我希望他们在首选项屏幕中输入想要使用的域名,并告诉他们如何配置dns 我知道你通常是如何(通过谷歌应用程序)将域添加到AppEngine实例的,但我不确定你是否能够自动完成。即使这是可能的,它们也会全部(数百)出现在我们的谷歌应用页面上 有人知道这是否可行/是否有一种好方法可以做到吗?我认为没有

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

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

我知道你通常是如何(通过谷歌应用程序)将域添加到AppEngine实例的,但我不确定你是否能够自动完成。即使这是可能的,它们也会全部(数百)出现在我们的谷歌应用页面上


有人知道这是否可行/是否有一种好方法可以做到吗?

我认为没有一种方法可以“以编程方式”将域添加到AppEngine实例中。显然,只能使用您描述的Google Apps方法添加域。这一点在本SO帖子中得到证实:

脑海中闪现的唯一选项如下:

  • 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提供商(如)还提供他们称之为“屏蔽隐藏iframe重定向”的服务。页面将在隐藏的iframe中呈现,因此URL在用户浏览器中不会更改。然而,这使得搜索引擎优化更加棘手,它将不允许用户书签内部网页,或参考他们容易

    正如你所看到的,这个选项不太理想,但是在某些情况下它是一个选择。还请注意,目前,使用301重定向的HTTP重定向是AppEngine问题跟踪程序上的建议解决方案

  • 反向代理

    另一个选择是在其他地方设置一个小型服务器,比如小型服务器,然后设置一个简单的服务器。您将能够非常轻松地进行设置,只需使用Apache和(或其他各种替代方法)。这将允许您要求客户机设置一个指向此实例的正常a记录,而Apache HTTP服务器将充当AppEngine的代理

    在mod_proxy中设置反向代理的基本配置指令是ProxyPass。您通常会为每个
    VirtualHost
    (每个客户端域)设置一行,如下所示:

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

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

    这是一个更简洁的解决方案,可以让您充分控制,但这些好处显然要付出一些代价。首先,托管反向代理会产生费用。您还将添加另一个故障点,因此必须将其添加到高可用性计划中。此外,如果您通过SSL为某些页面提供服务,它可能会变得非常复杂


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

rietveld code review应用程序可以做到这一点,因为您可以将其添加到您的google应用程序域中。有关更多详细信息,请参阅


首选方案可能是通过谷歌解决方案市场提供您的解决方案:

我们做了类似于Daniel Vassallo的第二个提案。 我们在Heroku云上创建了一个python应用程序 (连接自定义域没有限制)。 此应用程序使用python requests 1.2.0 lib根据请求域从应用程序引擎应用程序获取正确的页面。 你只需告诉你的客户你的Heroku应用程序url就是他们的CNAME
对于裸域,您可以始终使用wwwizer

非常好的答案,谢谢!不幸的是,正是我所担心的:-)重定向不是一个很好的选择,因为搜索引擎优化确实很棘手,但人们真的只是想继续在位置字段中查看他们的域。我想我们现在会选择选项2,但是在gae前面放一个单一的失败点会剥夺一开始就使用它的许多优势。我希望他们在不久的将来会有更好的东西。”KoeBo:也别忘了考虑可伸缩性,你必须保持一个负载平衡的代理服务器的设置,这个会话服务器有粘性会话(对于SSL)。对于一个简单的商店来说,这听起来不是很有趣。这可能意味着AppEngine it不是适合您的用例的正确解决方案。您能解释一下吗?本质上,我们谈论的是一个rev代理。但你只是用请求库来做。您可以提供github示例或详细信息吗?需要为高流量站点这样做,我不想运行nginx代理。