反向 DNS 和 Apache 虚拟主机

反向 DNS 和 Apache 虚拟主机

简而言之:启用反向 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。

相关内容