在Google App Engine中编程设置子域名

1 投票
2 回答
1431 浏览
提问于 2025-04-17 14:45

我正在将我的应用程序部署到GAE(谷歌应用引擎),主域名是www.mysite.com。当有人注册我的应用时,他们会使用类似username@company.com的邮箱。

我想从这个邮箱中提取出公司名,然后把网址设置成company.mysite.com,这样它就可以指向www.mysite.com。我觉得可以通过在域名注册商的控制面板上使用*通配符CNAME来实现。但是,根据这个讨论如何在跨服务器或DNS设置中设置动态子域名,我们不能在GAE上设置通配符域名。

所以,我的问题是,如何通过邮箱程序化地实现这一点,这样我就不需要为每个公司手动设置子域名?我可以在GAE上使用通配符子域名,还是需要在AWS的route53上做一些研究?

请注意,我的域名是从godaddy注册的。

2 个回答

3

与此同时,GAE(谷歌应用引擎)已经更新,现在完全支持子域名通配符了。你可以查看这个链接了解更多信息:自定义域名文档

不过,我在godaddy上也遇到过通配符的问题。godaddy的通配符是**,但还是不管用,我需要手动添加子域名。顺便说一下,我没有去找解决办法,而是选择把域名服务器指向其他地方。

如果你使用webapp2,可以看看这个链接:域名和子域名路由,看起来挺有意思的。

0

操作步骤

  1. 注册一个AWS Route53账号
  2. 在你的新Route53账号里,创建一个新的托管区域,区域的名称就是你在GoDaddy上托管的域名(比如在你的例子中,区域名称应该是 mysite.com
  3. 接下来,按照这里的步骤操作。在“为我们注册的域名设置名称服务器”下,选择“我有特定的名称服务器用于我的域名”(你需要在这里输入第二步中提供给你的名称服务器)
  4. 现在,这个域名需要是一个Google Apps域名,如果还不是的话,就注册一个Google Apps,或者把这个域名添加到你现有的Google Apps账户中。
  5. 按照自定义域名设置流程进行操作,但在第五步中输入 * 作为你的子域名
  6. 回到你的Route53控制台,给第二步创建的托管区域添加一个新的记录集。把类型切换为 CNAME,名称输入 *,值设置为 ghs.googlehosted.com(或者在第五步的设置过程中提供给你的其他值)

差不多就这些了。你需要等一段时间,让DNS设置生效,但现在 wildcard.mysite.com 应该可以指向你的应用了。

注意

这样做会允许任何通配符指向你的应用。有关通配符子域名映射的更多信息,请查看上面自定义域名设置流程页面中的关于通配符子域名映射的更多信息。你可以通过在应用中处理值来限制哪些子域名是“允许”的,对于不想承认的子域名返回404错误等(在你的使用场景中,任何不是注册你应用的用户公司名称的值都可以被视为不允许)

撰写回答