如何将 Apache 配置为多个子域

如何将 Apache 配置为多个子域

我的 apache 2.2 中有许多不同的子域指向同一个目录/应用程序。

像这样:

<VirtualHost *:80>
ServerName subdomain1.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>

<VirtualHost *:80>
ServerName subdomain2.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>

问题是配置 apache 时每个子域都添加到 DNS 服务器中。

是否可以只有一个虚拟主机来代表所有子域名?

像这样:

<VirtualHost *:80>
ServerName *.domain.com.br
ServerAdmin [email protected]
DocumentRoot /var/www/application
</VirtualHost>

答案1

是的,这是可能的,但在文章中VirtualHost 示例没有提到语法,例如ServerName *.domain.com.br。在这种情况下,你必须使用服务器别名指令,VirtualHost 配置应该是这样的:

<VirtualHost *:80>
    ServerName domain.com.br
    ServerAlias *.domain.com.br

    ServerAdmin [email protected]
    DocumentRoot /var/www/application
</VirtualHost>

请注意,指令 ServerAlias 只能在虚拟主机上下文中使用。

我认为,当您的所有子域都指向一个 DocumentRoot 文件夹时,如果在服务器上下文中设置 ServerName,结果将几乎相同:

<虚拟主机 *:80>
    服务器名称 domain.com.br
    服务器别名 *.domain.com.br

    服务器管理员[电子邮件保护]
    文件根目录 /var/www/application
</虚拟主机>

在这种情况下,您必须输入/etc/hosts下列的:

xxx.xxx.xxx.xxx  domain.com.br

xxx.xxx.xxx.xxx您的服务器的 IP 地址在哪里。

相关内容