Enom为代理商提供API,可以让您代表用户自动注册域名。(我与eNom没有关联,也没有使用过eNom的产品)。
*.weebly.com的实现
通常,这种形式的动态子域名将使用通配符DNS记录。此类型的记录将通配符模式(如*.example.com
)映射到一个或多个服务器。
假设你有一个博客网站并希望允许用户动态选择域名。您在www.example.com上放置一个网页,其中包含一个表单,以便让用户选择名称。因此,用户注册并选择bar.example.com
。
假设您的DNS服务器具有以下映射:
foo.example.com > 1.2.3.1
*.example.com > 1.2.3.2
任何对foo.example.com的请求都将路由到1.2.3.1,但是其他名称(如bar.example.com)将由1.2.3.2提供服务。因此,当用户被重定向到http://bar.example.com时,浏览器将访问1.2.3.2。请注意,由于不需要任何DNS更改,因此没有传播延迟:重定向将立即生效。
然后在运行在1.2.3.2上的软件中检查请求中的Host标头,解析fqdn并去掉.example.com,并将bar解析为数据库中的记录。如果存在记录,则为bar提供适当的响应。
您还需要保留一份保留名称或模式列表,例如www\d*,mail\d*,ns\d*,以便当用户尝试注册网站www07时,您的黑名单将拒绝它。
将任何域映射到bar.example.com
一旦存在
bar.example.com
网站,用户可能希望将自定义域名(如
www.widgetsimakeinmyhome.com
)映射到其网站。这个注册和设置大部分是手动的,像
EasyDNS这样的网站使其变得相当简单。有些注册商可能有API可以让你更轻松地完成其中的一部分。这些通常应该是RESTful或至少基于HTTP的API,因此您可以选择使用哪个客户端库(例如
urllib2
)。
为了创建映射,您的数据库需要有一个表将主要站点(如
bar
)映射到一个或多个域名别名。人们将登录并将
www.widgetsimakeinmyhome.com
映射到
bar
。
现在,您的软件需要根据
Host
头同时检查主要站点表和别名表,以解析到正确的站点。