尝试启动Apache时出现此错误。
_default_ virtualhost在端口443上重叠
我正在尝试设置SSL。几乎所有在线解决方案都说:
NameVirtualHost *:443
到conf文件,但Apache仍然无法启动,只是说
行动开始失败。 apache日志可能有更多信息
Apache日志中没有信息。
答案 0 :(得分:111)
要在Debian / Ubuntu系统上解决此问题,请通过向其添加/etc/apache2/ports.conf
来修改NameVirtualHost *:443
设置文件。目前我的ports.conf
如下:
# /etc/apache/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
NameVirtualHost *:443
Listen 443
</IfModule>
此外,请确保未启用&#39; sites-available / default-ssl&#39; ,键入a2dissite default-ssl
以停用该网站。当您在其中输入a2dissite
时,可以获取一个列表,看看您是否启用了可能映射到端口443的任何其他站点设置。
答案 1 :(得分:32)
在CentOS中安装一个vanilla Apache2时,安装mod_ssl时会自动添加一个配置文件:
{apache_dir}/conf.d/ssl.conf
此配置文件包含端口443的默认虚拟主机定义,名为 default :443。如果您还拥有自己的443虚拟主机定义(即在httpd.conf中),那么您将有一个混淆。由于首先包含conf.d文件,它们将胜过你的。
要解决冲突,您可以从conf.d/ssl.conf
删除虚拟主机定义,也可以将其更新为您自己的设置。
答案 2 :(得分:11)
添加NameVirtualHost *:443
极不可能是正确的解决方案,因为在有限数量的情况下,可以通过SSL支持基于名称的虚拟主机。请阅读this和this了解一些详细信息(可能有更好的文档;这些只是我发现的详细讨论过的问题)。
如果你正在运行一个相对有限的Apache配置,你可能在某个地方有这个:
<VirtualHost _default_:443>
你最好的选择是:
VirtualHost
容器或VirtualHost
块并创建一个新块。不要忘记包含所有相关的SSL选项。答案 3 :(得分:3)
我遇到了这个问题,因为我有相同端口的多个通配符条目。您可以通过执行apache2ctl -S
:
# apache2ctl -S
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 30000, the first has precedence
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 20001, the first has precedence
VirtualHost configuration:
11.22.33.44:80 is a NameVirtualHost
default server xxx.com (/etc/apache2/sites-enabled/xxx.com.conf:1)
port 80 namevhost xxx.com (/etc/apache2/sites-enabled/xxx.com.conf:1)
[...]
11.22.33.44:443 is a NameVirtualHost
default server yyy.com (/etc/apache2/sites-enabled/yyy.com.conf:37)
port 443 namevhost yyy.com (/etc/apache2/sites-enabled/yyy.com.conf:37)
wildcard NameVirtualHosts and _default_ servers:
*:80 hostname.com (/etc/apache2/sites-enabled/000-default:1)
*:20001 hostname.com (/etc/apache2/sites-enabled/000-default:33)
*:30000 hostname.com (/etc/apache2/sites-enabled/000-default:57)
_default_:443 hostname.com (/etc/apache2/sites-enabled/default-ssl:2)
*:20001 hostname.com (/etc/apache2/sites-enabled/default-ssl:163)
*:30000 hostname.com (/etc/apache2/sites-enabled/default-ssl:178)
Syntax OK
请注意输出开头的几条警告线。这些将指示哪些端口正在创建问题(但您可能已经知道)。
接下来,查看输出的结尾,您可以确切地看到创建问题的虚拟主机定义的文件和行。在上面的示例中,端口20001在第33行的/etc/apache2/sites-enabled/000-default
和第163行的/etc/apache2/sites-enabled/default-ssl
中分配。同样*:30000
列在2个位置。解决方案(在我的例子中)只是删除其中一个条目。