Apache2 中几个虚拟域的公共子域

Apache2 中几个虚拟域的公共子域

我正在运行一个带有 Apache2 和多个虚拟域的 Web 服务器。此外,这些域还有一个邮件服务器,公开一个 Web 界面。对于每个虚拟域example.com,我都有指向我的 Web 邮件界面 (Roundcube) 的子域mail.example.com。它与以下配置配合得很好:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName mail.example.com
    ServerAlias mail.vname1.com, mail.vname2.com, mail.vname3.com, #...

    DocumentRoot /srv/www/mail/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /srv/www/mail>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog /var/log/apache2/mail.error.log
    LogLevel warn

    CustomLog /var/log/apache2/mail.access.log combined
</VirtualHost>

ServerAlias但是,对于每个新客户,除其他事项外,我还要将相应的域名添加到es列表中。

有没有办法自动关联所有mail.*子域名/srv/www/mail/

答案1

ServerAlias 指令支持通配符 - 您应该能够使用以下内容来匹配所有“邮件”子域。

ServerAlias mail.*

通配符子域名(即 *.domain.tld)有详尽的文档记录,但很难找到任何迹象表明域名部分也可以作为通配符。

当我使用 Apache 时,我经常将这种方法用于常见的子域。唯一的区别是我使用了重定向到常见 URL(因为我想使用 SSL,并且不想为每个域获取证书)。尽管如此,它还是能够成功捕获子域,因此相同的实现应该适用于您的场景。(当然,您仍然需要一个静态 ServerName 指令)。

相关内容