子域名和DNS

5

我目前拥有自己的域名和专用服务器,并向我的客户提供不同的套餐。我想做的是让他们在我的网站上注册并自动创建一个他们可以通过用户名作为子域名访问的套餐。

http://yourusername.mywebsite.com

我目前已经为我的网站设置了各种子域名的DNS条目,例如:

名称 类型 IP地址
@ A 1.2.3.4
bugs A 1.2.3.4
support A 1.2.3.4

然而,如果有新客户注册,我目前必须手动创建一个包含他们用户名的条目。

我相信我曾经看到过可以自动完成此操作的网站,有人有任何想法或其他应该使用的方法吗?

谢谢,
马克

4个回答

8

由于您显然不控制名称服务器,因此您的选择相当有限。一种可能性是使用通配符DNS记录:

*  A  192.0.2.1

星号将替换每个名称。这并不理想(不存在的域也会出现)。


1
非常有趣的方法。除了把不存在的域名发送到192.0.2.1(这样用户会收到404错误而不是被告知服务器名称不存在)之外,还有其他什么缺点吗?它是否可能比列出20,000个A记录并在添加每一个时都必须重新启动bind更加高效? - Darren Cook

3

具体细节取决于您使用的DNS服务器。

一种方法是编写一些代码来打开DNS区域文件并添加所需的记录。在Linux上使用Bind时,您需要发出信号以使服务器重新读取区域文件。


啊,我明白了,这是通过 DNS 服务器本身完成的吗?我目前只使用 123-reg.co.uk,并将我的名称服务器指向他们告诉我的条目。我想他们可能会为我掩盖所有这些工作,因此我对此没有太多控制权?谢谢。 - ca8msm
1
是的,在DNS中,域名和IP地址之间的映射发生在区域文件级别,并且子域名位于单个区域文件中。一些提供商可以充当辅助DNS,您可以在与Web服务器相同的计算机上提供DNS服务器,并定期传输区域文件。有了这个设置,您可以将中央名称服务器指向您的主机,因此仅将本地DNS服务器用作区域文件的来源,而不用于解析查询。 - RickNZ
正确:您需要以某种方式控制DNS主服务器。然后,根据您使用的名称服务器软件,您有几种技术可供选择,包括编辑区域文件、使用DNS动态更新、插入到DBMS中等。 - bortzmeyer

1

使用Simple DNS Plus,您可以通过包含的HTTP API轻松添加此类DNS记录。例如:

http://127.0.0.1:8053/updatehost?host=yourusername.mywebsite.com&data=1.2.3.4

3
额外信息:仅限Windows,商业解决方案,提供免费试用版。 - Darren Cook

0

由于您显然无法控制名称服务器,因此您的选择相当有限。尽管如此,每个认真的DNS托管提供您API(例如Slicehost's API)。因此,您可以使用此API并编写一个小程序来更新DNS数据。

(注:当您甚至无法控制名称服务器时处理付费客户似乎很糟糕)


另一方面,让专业公司来运行您的DNS而不是假装自己能够胜任这项工作似乎是个不错的选择;-) - Darren Cook

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接