在多租户系统中为特定子域服务不同的应用程序

时间:2013-08-30 14:17:06

标签: google-app-engine flask multi-tenant

我已经在App Engine中构建了一个烧瓶应用程序,使用了通配符子域映射以及提供App Engine的命名空间支持,以便从任何子域提供应用程序。一切正常。

现在,我想创建一个子域名,例如admin.domain.com来处理一些与管理员相关的活动。所有其他子域都指向普通应用。

当未注册用户访问company.domain.com时,应将其重定向到admin.domain.com,他将在此注册,一旦完成,他将自动返回company.domain.com。

如何将管理应用程序映射到特定子域?无论如何使用Flask或App Engine来做到这一点?如果不可能,如何处理这种情况?

这是我第一次构建这样的应用程序。

谢谢..

1 个答案:

答案 0 :(得分:1)

当您使用“app”这个词时,我不确定语义。在严格的GAE意义上,应用程序是完全独立的,每个应用程序都有自己的计费和数据存储等。

如果您严格要将管理员应用程序作为单独的应用程序,则不能使用通配符子域映射。您必须使用App Engine管理员设置手动映射每个子域以映射域。您可以将admin.domain.com映射到管理员应用,并手动将其他子域映射到普通应用。

如果你只是谈论在同一个应用程序中运行的单独管理功能,并且你没有严格使用admin.domain.com,那么最好的办法就是使用新的模块功能并创建你的' admin'作为一个单独的模块,并使用dispatch.yaml路由到它: https://developers.google.com/appengine/docs/python/modules/routing

否则,Flask / GAE实际上并没有为此提供任何内置机制。你必须做一些麻烦的事情,比如检查每个请求处理程序中的URL,并在管理员的情况下采取适当的行动。