总有一些错误淬不及防,若是你在配置 apache2.4 上的 https过程当中,看起来全部的配置都正确了,并且参考了众多文章还存在错误,那么只有一个可能,那就是
VirtualHost
的监听的域名端口出错了.apache
是否是有点想发泄一下,昨晚就这一个问题,我配置了4个小时,最后一行一行代码删,才找到问题的点,也能够说,是本身对 VirtualHost
掌握的还不够.服务器
解决方法只有一个:要么基于IP来作虚拟主机,要么基于名称来作虚拟主机,不要混用,不要混用,否则优先级绝对是一个大坑,并且推荐使用 基于名称来作,也就是 <VirtualHost *:443>
spa
我原来的配置是命令行
<VirtualHost localhost:443>调试 ...code </VirtualHost>文档 <VirtualHost www.example.com:443>域名 ...table </VirtualHost>配置 |
对于 VirtualHost
,官方定于以下:
<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost> |
也就是说,能够监听多个地址多个端口
对于 addr
这一段,官方是这么描述的
+ 虚拟主机的 IP + 域名的全称,不推荐 + * 号,就是能够监听多个IP + _default_ 这个是 * 号的别名 |
重要的是要知道,VirtualHost有两种配置方法,基于IP地址的虚拟主机和基于名称的虚拟主机,并且,二者不能混用,是的,二者不能混用
我一开始掌握的只是仍是好好的,后来以为能够填上IP啊,就填了。一旦填上IP,优先级就坑爹了
而后,官方的下面这段话也颇有用,我以为是整个文档里最有用的一段话了:
若是你要调试虚拟主机配置,你会发现 Apache 的命令行参数 -S 很是有用。即输入如下命令:
/usr/local/apache2/bin/httpd -S
这个命令将会显示 Apache 是如何解析配置文件的。仔细检查 IP 地址与服务器名称可能会帮助你发现配置错误