我在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是为myapp2和www.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上运行),因此我没有注意到它。