Apache错误:端口443上的_default_ virtualhost重叠

时间:2012-05-18 18:37:35

标签: apache virtualhost

尝试启动Apache时出现此错误。

  

_default_ virtualhost在端口443上重叠

我正在尝试设置SSL。几乎所有在线解决方案都说:

NameVirtualHost *:443

到conf文件,但Apache仍然无法启动,只是说

  

行动开始失败。 apache日志可能有更多信息

Apache日志中没有信息。

4 个答案:

答案 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支持基于名称的虚拟主机。请阅读thisthis了解一些详细信息(可能有更好的文档;这些只是我发现的详细讨论过的问题)。

如果你正在运行一个相对有限的Apache配置,你可能在某个地方有这个:

<VirtualHost _default_:443>

你最好的选择是:

  • 将其他SSL配置放入现有的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个位置。解决方案(在我的例子中)只是删除其中一个条目。