我正在运行一个带有 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 指令)。