如果用户在注册我的网站时应该如何设置子域。
需要什么基础设施?我正在使用Linux服务器。
答案 0 :(得分:6)
您可以为每个已知子域使用特定DNS(CNAME
或A
/ AAAA
)条目,也可以使用接受* .example的通配符DNS条目。 COM:
$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
环境变量),该脚本呈现输出以确定哪个用户的内容为显示。
答案 1 :(得分:3)
您可以在DNS设置中为每个子域
制作CNAME条目/ A记录CNAME记录是您的记录 允许的域管理设置 你控制你的子域名 域。
要自动化以及注册,您可以编写一个脚本,当他/她注册时为每个用户执行。
您也可以参考此链接,了解Apache的分步过程:
<强> How to setup subdomains in apache 强>
(因为你提到Linux,我认为它必须是APache。如果不是这样的话请提及)
替代解决方案
您也可以在同一个帖子中引用wildcard solution, given by Alnitak。我发现他的方式更简单。 :)
答案 2 :(得分:0)
基础架构包括访问dns服务器以添加通配符条目,并在Apache中重写规则。
尝试以下答案:
或此链接:
答案 3 :(得分:0)
如果您使用的是Linux服务器,我假设您使用Apache作为您的网络服务器。
您必须为子域和虚拟主机设置正确的DNS路由。
虚拟主机设置起来相当容易,但我不确定在进行中动态执行它们是多么容易。
大多数情况下,编辑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>
VirtualHost Documention可能会对您有所帮助。
答案 4 :(得分:0)
Apache允许您根据单个服务器上的子域指定任意数量的“站点”。创建一个包含相应子域信息的新“网站定义”文件以及正确的DNS通配符,可以满足您的需求。
换句话说,过程是这样的:
重要这是基于Debian风格的Apache配置,其中配置文件包含在目录中,主配置读取该目录中的所有配置文件。这将大大简化事情,因为添加/删除子域意味着添加/删除文件,而不是编辑单个文件,因此该过程将更容易自动化。