Apache ssl裸域找不到VirtualHost
我们有4个SAN的UC证书。其中一个SAN是裸域名,即domain.com 我们的ssl工作正常,指向每个SAN的正确虚拟主机目录,主域名或裸域名除外。出于某种我无法理解的原因,当请求裸域时,Apache正在从主httpd.conf文件中提供默认DocumentRoot 我们正在Linux中运行Apache2.4。 httpd.conf文件包括conf.d/目录中的*.conf文件 我们创建了一个名为virtual.conf的文件,内容如下:Apache ssl裸域找不到VirtualHost,apache,ssl,Apache,Ssl,我们有4个SAN的UC证书。其中一个SAN是裸域名,即domain.com 我们的ssl工作正常,指向每个SAN的正确虚拟主机目录,主域名或裸域名除外。出于某种我无法理解的原因,当请求裸域时,Apache正在从主httpd.conf文件中提供默认DocumentRoot 我们正在Linux中运行Apache2.4。 httpd.conf文件包括conf.d/目录中的*.conf文件 我们创建了一个名为virtual.conf的文件,内容如下: <VirtualHost *:80>
<VirtualHost *:80>
DocumentRoot /data/www/html/domain/public
ServerName domain.com
ServerAlias *.domain.com
SetEnv ZF2_PATH "/data/www/html/zf2/library"
<Directory /data/www/html/domain/public >
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /data/www/html/domain/public
ServerName domain.com
SetEnv ZF2_PATH "/data/www/html/zf2/library"
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/domain_com.crt
SSLCertificateKeyFile /etc/pki/tls/private/leaders.key
<Directory /data/www/html/domain/public >
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /data/www/html/domain/public
ServerName va.domain.com
SetEnv ZF2_PATH "/data/www/html/zf2/library"
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/domain_com.crt
SSLCertificateKeyFile /etc/pki/tls/private/leaders.key
<Directory /data/www/html/domain/public >
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
DocumentRoot/data/www/html/domain/public
ServerName域名.com
ServerAlias*.domain.com
SetEnv ZF2_PATH“/data/www/html/ZF2/library”
DirectoryIndex.php
允许超越所有
命令允许,拒绝
通融
DocumentRoot/data/www/html/domain/public
ServerName域名.com
SetEnv ZF2_PATH“/data/www/html/ZF2/library”
斯伦金安
SSLCertificateFile/etc/pki/tls/certs/domain\u com.crt
SSLCertificateKeyFile/etc/pki/tls/private/leaders.key
DirectoryIndex.php
允许超越所有
命令允许,拒绝
通融
要求所有授权
DocumentRoot/data/www/html/domain/public
ServerName va.domain.com
SetEnv ZF2_PATH“/data/www/html/ZF2/library”
斯伦金安
SSLCertificateFile/etc/pki/tls/certs/domain\u com.crt
SSLCertificateKeyFile/etc/pki/tls/private/leaders.key
DirectoryIndex.php
允许超越所有
命令允许,拒绝
通融
要求所有授权
目前,每个虚拟主机都指向服务器上的同一文件夹
有人知道为什么调用会导致Apache提供默认DocumentRoot位置(位于httpd.conf中)而不是此VirtualHost指令中指定的目录吗
谢谢。事实证明,VirtualHost指令要求使用内部网络IP地址属性。所以
<VirtualHost *:443>
一定是
<VirtualHost 10.10.10.10:443>
或者无论内部网络IP地址是什么
我曾尝试使用公共IP地址,这导致Apache在启动时失败。因此,公共IP不起作用,但网络IP会起作用。根据Apache的wiki上的一篇文章,您无法为SSL配置命名虚拟主机。问题在于,要确定必须引用哪个虚拟主机,必须从HTTP请求中获取“主机”头的内容。但是,在SSL的情况下,您的请求是加密的,因此您没有该信息。这就是为什么根据IP(或接口)地址(基于IP的虚拟主机)执行虚拟主机匹配
不过,如果您的子域属于同一个域(如本文示例中的one.example.com、two.example.com等),那么您可能有多个虚拟主机(当然有IP地址)