简而言之:启用反向 DNS 时,Apache 的 VirtualHost 无法按预期工作。
我在单个 CentOS 服务器上管理 Web 服务。它有一个 IP 地址和多个子域,每个子域都有不同的 webroot 设置(由 Apache 的 VirtualHost 配置决定)。*.conf 文件位于 /etc/httpd/conf.d 下。
NameVirtualHost *:443
<VirtualHost *:443>
ServerName any
DocumentRoot /var/www/html
# other configurations such as SSLCertificateFile, etc...
</VirtualHost>
<VirtualHost *:443>
ServerName main-domain.com
DocumentRoot /home/main-service/front
# other configurations such as SSLCertificateFile, etc...
</VirtualHost>
<VirtualHost *:443>
ServerName admin-domain.com
DocumentRoot /home/main-service/admin
# other configurations such as SSLCertificateFile, etc...
</VirtualHost>
# and so on...
这样做的目的是控制传入访问,如下所示:
- 通过 IP 地址访问 => /var/www/html (返回简单的文本,表示没有任何内容)
- 通过访问主域名.com=> /主页/主要服务/前台
- 通过访问admin-domain.com=> /主页/主服务/管理员
够简单了。
之前一直没有出现任何问题,直到我启用此 IP 地址的反向 DNS,以降低系统发送电子邮件时被视为垃圾邮件的风险。启用 IP 地址的反向 DNS 后,主域名.com,通过访问主域名.com不再引用ServerName main-domain.com
该部分,Apache 引用默认的 /etc/httpd/conf.d/ssl.conf 文件。
我猜这里有一些配置的优先级问题,但我找不到任何文档对此有清楚的解释。我该如何在启用反向 DNS 的情况下使其工作?
Apache 版本是 2.2。