题
当用户注册我的网站时,应该如何为他们设置子域。
需要哪些基础设施?我正在使用 Linux 服务器。
解决方案
您可以做一个CNAME条目/ A记录在您的DNS设置,为每个子域
CNAME记录是在记录您的 域名管理设置,允许 你控制的子域您 域。
要自动执行它强>使用登记沿,可以编写其对于每个用户,当他/她登记。
执行的脚本可以参考此链接,以及,用于一步一步的过程为Apache:
<强> 如何设置在子域阿帕奇 强>
(因为你提到的Linux,我想那一定是Apache的。请注明如果是其他方式)的
<强>替代的解决方案强>
其他提示
您可以使用特定的 DNS (CNAME
或者 A
/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 或 Apache 配置。缺点是所有此类通配符查找必须(根据定义)最终返回相同的 IP 地址。
Apache 配置将取决于您对最终用户控制和安全性的要求。请注意,如果用户有权在服务器上运行 CGI 脚本,则需要进行额外的设置以确保安全完成。
根据内容是静态还是动态,这也会影响您的配置:
使用
mod_vhost_alias
将各个虚拟主机映射到服务器上各自的目录中。如果你 真的 想要,创建一个单独的
<VirtualHost>
每个已知站点的部分,但是每次新用户注册时您都必须重新启动 Apache使用单个
<VirtualHost>
然后查看请求的 URL 的主机名部分(来自$SERVER_NAME
环境变量)在渲染输出的脚本中确定要显示的用户内容。
基础设施包括访问dns服务器以添加通配符条目,以及在Apache中重写规则。
尝试这些答案:
或这个链接:
如果您使用的是Linux服务器我假设你使用Apache作为Web服务器。
您将不得不为子域,以及一个虚拟主机设置正确的DNS路由。
虚拟主机是很容易设置,但我不知道它是多么容易做他们的飞行progmatically。
它的大部分是作为编辑Apache的配置文件,并加入以下作为易时间:
Port 80
ServerName www.mydomain.com
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/user-bob
ServerName bob.mydomain.com
...
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/user-sally
ServerName sally.mydomain.com
...
</VirtualHost>
在虚拟主机机制的文档大概会的一些对你有用。
Apache 允许您根据单个服务器上的子域指定任意数量的“站点”。创建一个新的“站点定义”文件,其中包含适当的子域信息以及适当的 DNS 通配符,即可完成您想要的操作。
换句话说,这个过程是这样的:
- 设置通配符,以便 *.mysite.com 定向到正确的服务器。
- 当新用户注册时,创建正确的 Apache 站点定义文件 - 您可能会有一个基本模板,您可以将正确的子域信息放入其中并保存。
- 让 Apache 重新读取其配置。
- 利润。
重要的 这是基于 Debian 风格的 Apache 配置,其中配置文件包含在一个目录中,主配置读取该目录中的所有配置文件。这将大大简化事情,因为添加/删除子域将意味着添加/删除文件,而不是编辑单个文件,因此该过程将更容易自动化。