尝试启动 Apache 时出现此错误。
_default_ virtualhost 在端口 443 上重叠
我正在尝试设置 SSL。几乎每个在线解决方案都说添加:
NameVirtualHost *:443
到 conf 文件,但 Apache 仍然无法启动,只是说
动作启动失败。apache日志可能有更多信息
Apache 日志中的信息为零。
尝试启动 Apache 时出现此错误。
_default_ virtualhost 在端口 443 上重叠
我正在尝试设置 SSL。几乎每个在线解决方案都说添加:
NameVirtualHost *:443
到 conf 文件,但 Apache 仍然无法启动,只是说
动作启动失败。apache日志可能有更多信息
Apache 日志中的信息为零。
要解决 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>
此外,确保未启用“站点可用/默认 SSL”a2dissite default-ssl
,键入以禁用该站点。当您使用它时a2dissite
,自行键入以获取列表,并查看您是否启用了任何其他可能映射到端口 443 的站点设置。
在 CentOS 中安装 vanilla Apache2 时,当您安装 mod_ssl 时,它会自动在以下位置添加一个配置文件:
{apache_dir}/conf.d/ssl.conf
此配置文件包含端口 443 的默认虚拟主机定义,名为default :443。如果您也有自己的 443 虚拟主机定义(即在 httpd.conf 中),那么您将遇到冲突。由于首先包含 conf.d 文件,因此它们会胜过您的文件。
要解决冲突,您可以从中删除虚拟主机定义conf.d/ssl.conf
或将其更新为您自己的设置。
我遇到了这个问题,因为我有多个相同端口的通配符条目。您可以通过执行以下命令轻松检查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 被分配在/etc/apache2/sites-enabled/000-default
第 33 行和/etc/apache2/sites-enabled/default-ssl
第 163 行。同样*:30000
在 2 个地方列出。解决方案(在我的情况下)只是删除其中一个条目。