Apache httpd.conf 仅对子域名使用 SSL,对其他 https URL 给出 404

Apache httpd.conf 仅对子域名使用 SSL,对其他 https URL 给出 404

我的网站邮件客户端的当前配置如下:

    NameVirtualHost *:443

    <VirtualHost *:443>
            SSLEngine on
            SSLCertificateFile /etc/pki/tls/certs/ca.crt
            SSLCertificateKeyFile /etc/pki/tls/private/ca.key
            <Directory /var/www/mailclient>
                    AllowOverride All
            </Directory>
            DocumentRoot /var/www/mailclient
            ServerName mail.*
            ServerAlias mail.*
    </VirtualHost>

当我尝试访问 https:// mail.domain1.com 或 https:// mail.domain2.com 时,一切正常。

但是当我尝试访问 https:// domain1.com 或 https:// sub.domain1.com 时,我仍然可以看到 Web 邮件客户端,但除了 404 或类似内容之外,我什么也不想看到。那么,如何才能将此虚拟主机限制为仅用于特定子域呢?

答案1

配置一个默认的虚拟主机,它将返回错误。它需要位于当前虚拟主机之上才能成为默认虚拟主机,但要位于配置之下NameVirtualHost

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName default.filler.name
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    <Location />
        Order Allow,Deny
        Deny from all
    </Location>
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    <Directory /var/www/mailclient>
        AllowOverride All
    </Directory>
    DocumentRoot /var/www/mailclient
    ServerName mail.*
    ServerAlias mail.*
</VirtualHost>

它将是 403 而不是 404。够接近了吗?

答案2

当 Apache 找不到正确的虚拟主机时,它将使用默认的 (*) 虚拟主机。
您可以使用默认虚拟主机来解决这个问题。

<VirtualHost _default_:443>
  RedirectMatch permanent ^/?(.*) http://mymainwebsite.com/$1
</VirtualHost>

如果有人使用 IP 或其他子域连接到端口 443,这将阻止它弹出。

相关内容