Apache 根域 SSL 虚拟主机不起作用?

Apache 根域 SSL 虚拟主机不起作用?

我有一个 Apache 安装,mydomain.com其文档根目录位于:

/var/www/html/

文档根目录中有三个文件夹:

myapp1
myapp2
mysite

我想要带有子域名的以下配置:

myapp1.mydomain.com --> /var/www/html/myapp1
myapp2.mydomain.com --> /var/www/html/myapp2
www.mydomain.com --> /var/www/html/mysite
mydomain.com --> /var/www/html/mysite

配置必须适用于纯文本 HTTP 和 HTTPS。我使用虚拟主机来实现这一点。例如:

<VirtualHost *:80>
    DocumentRoot /var/www/html/myapp1
    ServerName myapp1.mydomain.com
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/html/myapp1
    ServerName myapp1.mydomain.com

    SSLEngine on
    SSLCertificateKeyFile /etc/pki/tls/private/server.key
    SSLCertificateFile /etc/pki/tls/certs/server.crt
</VirtualHost>

myapp2和 的配置相同www.mydomain.com。但是,当我尝试为根域配置 SSL 虚拟主机时,出现了问题:mydomain.com。这是配置:

<VirtualHost *:443>
    ServerName mydomain.com
    DocumentRoot /var/www/html/mysite

    SSLEngine on
    SSLCertificateKeyFile /etc/pki/tls/private/server.key
    SSLCertificateFile /etc/pki/tls/certs/server.crt
</VirtualHost>

这不起作用。转到将https://mydomain.com带我进入默认文档根目录 ( /var/www/html) 并显示 apache 默认欢迎页面。看来 apache 没有注册此虚拟主机。有趣的是,纯 HTTP 的虚拟主机可以mydomain.com工作,即将http://mydomain.com我带到/var/www/html/mysite

为什么我不能为根域设置一个 SSL 虚拟主机,而其他虚拟主机却可以正常运行?

答案1

在某处有另一个VirtualHost针对端口 443 的块,要么在您想要的块之前加载,要么绑定到特定地址*,这会将请求发送到该位置;这是提供内容的唯一方式。

除此之外,对于您所针对的配置,您还需要确保NameVirtualHost *:443在现有的配置旁边有一个指令NameVirtualHost *:80;取决于您的配置布局,但通常在 ports.conf 中。

答案2

问题已解决。

我按照有关另一个 VirtualHost 阻止我自己的配置的建议并找到了它。它是:

<VirtualHost _default_:443>

在 ssl.conf 中定义。问题是该文件位于 conf.d/(在 Fedora 上运行)目录中,所以我没有注意到它。

相关内容