如何dynamic创build子域名?

我希望能够使用脚本语言(如PHP,Python,Perl或其他)来dynamic创build和删除子域名。 我使用Apache作为Web服务器

例:

http://subdomain.example.com http://subdomain2.example.com 

谢谢

您可以在您的DNS设置中为每个子域创buildCNAME条目/ Alogging

CNAMElogging是“域pipe理设置”中的一条logging,可用于控制域的子域。

要将其与注册一起自动化 ,您可以编写一个脚本,在每个用户注册时执行。

您也可以参考这个链接,了解Apache的分步过程:

如何在apache中设置子域名

替代解决scheme

你也可以参考由Alnitak提供的一个更简单的通配符解决scheme 。

您可以为每个已知子域使用特定的DNS( CNAMEA / AAAA )条目,也可以使用将接受* .example.com的通配DNS条目:

 $ORIGIN example.com foo IN A 12.34.6.78 bar IN A 12.34.6.78 

要么

 $ORIGIN example.com * IN A 12.34.6.78 

后者的优点是,一旦服务运行,DNS和Apacheconfiguration都不需要进行任何更改。 缺点是所有这样的通配符查找必须(根据定义)最终返回相同的IP地址。

Apacheconfiguration将取决于您的要求,无论是最终用户控制还是安全性。 请注意,如果用户有权在服务器上运行CGI脚本,则需要额外的设置以确保安全地完成此操作。

根据内容是静态的还是dynamic的,这也会影响你的configuration:

  1. 使用mod_vhost_alias将各个虚拟主机映射到服务器上各自的目录。

  2. 如果你真的想,为每个已知的站点创build一个单独的<VirtualHost>部分,但是每当新用户注册时你就必须重新启动Apache

  3. 使用一个<VirtualHost> ,然后查看呈现输出的脚本中的请求URL(来自$SERVER_NAME环境variables)的主机名部分,以确定要显示哪个用户的内容。

子域的创build是build立在Apache之上的,可以查看大量的虚拟主机。 具体来说: http : //httpd.apache.org/docs/2.0/vhosts/mass.html

所有你需要做的事情是拿出一个约定,然后让你的脚本在需要的时候创build目录。 但是,从技术上说,你想开始与Apache的大规模虚拟主机configuration设置。

这实际上是一个DNS问题,而不是一个Apache问题,除非你有一个* .example.comlogging指向上述networking服务器。 如果客户端无法parsing子域名example.com,则Web服务器无关紧要。

不要实际创build子域名,而只需使用通配符子域名,以便拥有http://anything.example.com

我在python网站中使用的另一个解决scheme是检查中间件中的子域。 然后,我检查对子数据库的数据库,如果我find一个匹配,我设置一个请求级别设置告诉代码我在看什么子域名。

这真的很干净,可以很好地工作。 我的网站目前支持超过350个dynamic子域名。