Apache根域SSL虚拟主机不工作?

我在mydomain.com上有一个apache安装文件,它的根目录是:

 /var/www/html/ 

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

 myapp1 myapp2 mysite 

我想要子域名的以下configuration:

 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 

该configuration必须适用于纯文本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> 

相同的configuration是为myapp2www.mydomain.com 。 但是当我尝试为根域mydomain.comconfigurationSSL虚拟主机时遇到问题。 这是configuration:

 <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不注册这个虚拟主机。 有趣的是,一个简单的HTTP mydomain.com的虚拟主机工作,即去http://mydomain.com把我带到/var/www/html/mysite

为什么我不能有一个SSL虚拟主机的根域而其他虚拟主机工作正常?

还有另一个用于端口443的VirtualHost模块,可以在你想要的模块之前加载,也可以绑定到一个特定的地址而不是* ,它将请求发送到那个地址。 这是内容获取的唯一途径。

除此之外,对于你正在瞄准的configuration,你还需要确保你有一个NameVirtualHost *:443指令和现有的NameVirtualHost *:80 ; 取决于你的configuration布局,但通常在ports.conf中。

问题已经解决了。

我遵循关于另一个阻止我自己的configuration的VirtualHost的build议,并find它。 这是和:

 <VirtualHost _default_:443> 

在ssl.conf中定义。 问题在于该文件在conf.d /(在Fedora上运行),因此我没有注意到它。