Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache错误:\默认值\端口443上的虚拟主机重叠_Apache_Virtualhost - Fatal编程技术网

Apache错误:\默认值\端口443上的虚拟主机重叠

Apache错误:\默认值\端口443上的虚拟主机重叠,apache,virtualhost,Apache,Virtualhost,我在尝试启动Apache时遇到此错误 _端口443上的默认虚拟主机重叠 我正在尝试设置SSL。几乎所有在线解决方案都说添加: NameVirtualHost *:443 但是Apache仍然无法启动,只是说 操作启动失败。apache日志可能包含更多信息 Apache日志中没有任何信息。添加NameVirtualHost*:443不太可能是正确的解决方案,因为在有限的情况下,可以通过SSL支持基于名称的虚拟主机。阅读并了解一些细节(可能有更好的文档;这些只是我发现的详细讨论该问题的文档) 如果

我在尝试启动Apache时遇到此错误

_端口443上的默认虚拟主机重叠

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

NameVirtualHost *:443
但是Apache仍然无法启动,只是说

操作启动失败。apache日志可能包含更多信息


Apache日志中没有任何信息。

添加
NameVirtualHost*:443
不太可能是正确的解决方案,因为在有限的情况下,可以通过SSL支持基于名称的虚拟主机。阅读并了解一些细节(可能有更好的文档;这些只是我发现的详细讨论该问题的文档)

如果您运行的是一个相对稳定的Apache配置,那么您可能在某个地方有这样的配置:

<VirtualHost _default_:443>

您的最佳选择是:

  • 将附加的SSL配置放入此现有的
    VirtualHost
    容器中,或
  • 注释掉整个
    VirtualHost
    块并创建一个新块。不要忘记包括所有相关的SSL选项

要解决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>
#/etc/apache/ports.conf
#如果您只是在此处更改端口或添加更多端口,则很可能
#必须更改中的VirtualHost语句
#/etc/apache2/sites enabled/000默认值
#如果您从2.2.9-3之前的版本升级(即从
#Debian蚀刻)。请参见/usr/share/doc/apache2.2-common/NEWS.Debian.gz和
#README.Debian.gz
名称虚拟主机*:80
听80
#如果在此处添加NameVirtualHost*:443,则还必须进行更改
#/etc/apache2/sites available/default ssl中的VirtualHost语句
#到
#SSL命名虚拟主机的服务器名称指示当前不可用
#由Windows XP上的MSIE支持。
名称虚拟主机*:443
听我说
名称虚拟主机*:443
听我说

此外,请确保未启用“站点可用/默认ssl”,键入
a2dispate default ssl
以禁用站点。当您在CentOS中安装vanilla Apache2时,键入
a2Dispatite
以获取列表,并查看是否有您启用的任何其他站点设置可能映射到端口443。

在CentOS中安装vanilla Apache2时,当您安装mod_ssl时,它将自动在以下位置添加配置文件:

{apache_dir}/conf.d/ssl.conf
此配置文件包含端口443的默认虚拟主机定义,名为default:443。如果您也有自己的443虚拟主机定义(即在httpd.conf中),那么您将有一个confct。因为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在第33行的
/etc/apache2/sites enabled/000 default
和第163行的
/etc/apache2/sites enabled/default ssl>中分配。同样地,
*:30000
列在两处。解决方案(在我的例子中)只是删除其中一个条目。

您正在检查哪些日志?如果您在Linux系统上,请运行
netstat–lp--inet
,查看某个进程是否已经在运行并使用端口443。不,其他任何进程都没有使用端口443。问题是我的设置与…之间存在冲突。注意:我已将
名称virtualhost
位放在
部分中-似乎合理-但它必须在该部分之外。任何时候在多个虚拟主机中使用IP地址和端口组合,基于名称的虚拟主机将自动为该地址启用。嘿,谢谢你的建议,但我仍然无法让apache正常工作。在/etc/apache2/sites中有一个默认的ssl文件,其中包含可用于mydomain.com的/etc/apache2/sites中创建新文件并包含的ssl设置时,我在端口443上得到默认的vhost重叠错误。当我在新的ssl设置中使用默认ssl时,当我尝试在错误日志中没有任何内容的情况下启动apache时,我只是得到一个操作启动失败…我完全塔克:(再次生成ssl并放入pache2.conf文件后,apache再次启动,ssl我发誓:)”使用apache 2.2.12并支持SNI(服务器名称指示)扩展到SSL协议,您可以配置基于名称的HTTPS站点,就像您可以配置基于名称的HTTP站点一样。“()-当使用SSL时,只有旧版本的Internet Explorer可能会让您头疼,因为一个IP地址上有多个主机名…如果我将其注释掉,并且在重新启动Apache时仍然收到此消息,该怎么办?
grep-r\u default\uu/etc/httpd/
只显示我注释掉的vhost。Apache是否缓存配置文件?HI@MUYBelgium,这意味着还有另一个vhost映射到443端口。请查看
/etc/apache/sites enabled/
或Debian/Ubuntu,使用
a2dispatite
禁用所有站点,并使用
a2ensite
逐个启用它们,直到出现错误;希望这能有所帮助。是的……我也有同样的问题。必须更新ports.conf和sites available/default ssl(将默认值替换为*)然后我可以使用SSL启用我的其他虚拟主机。应该编辑您的答案以包含此附加信息。谢谢您