NameVirtualHost*:80没有VirtualHosts

Jay*_*Jay 37 apache ip apache2 ubuntu-10.04

我有两个域名,两个ssl证书和两个IP地址.我正在尝试为他们配置我的apache虚拟主机文件.

首先,我注释掉了端口80和443的所有"NameVirtualHost"和"Listen"实例.然后我用我的虚拟主机文件做了以下操作.

domain1的VirtualHost文件:

NameVirtualHost 1.1.1.1:80
Listen 1.1.1.1:80
Listen 1.1.1.1:443
<VirtualHost 1.1.1.1:80>
    ServerName domain1.com
    ...
</VirtualHost>
<VirtualHost 1.1.1.1:443>
    ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

domain2的VirtualHost文件:

NameVirtualHost 2.2.2.2:80
Listen 2.2.2.2:80
Listen 2.2.2.2:443
<VirtualHost 2.2.2.2:80>
    ServerName domain2.com
    ...
</VirtualHost>
<VirtualHost 2.2.2.2:443>
    ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Ran*_*tka 42

在我拥有Ubuntu服务器的2个月里,我忽略了同样的错误.我发现这篇文章很好地解决了错误.谢谢Michael!就像杰伊一样,我在/etc/apache2/ports.conf找到了罪魁祸首.我试过这个:

# NameVirtualHost *:80
我只评论了那条线,没有其他变化,也没有更多

"NameVirtualHost*:80没有VirtualHosts"

  • 大!我也是!解决了! (6认同)

Mic*_*ski 29

在您的配置中的某个地方,可能在Apache默认配置文件中(我认为/etc/apache2/httpd.conf在Ubuntu中有人可以在评论中纠正我),是一行如下所示:

NameVirtualHost *:80

# Also
Listen 80
Listen 443
Run Code Online (Sandbox Code Playgroud)

将它们注释掉,并在VirtualHost配置文件中添加:

Listen 111.111.111.111:80
Listen 222.222.222.222:80
# If also using SSL
Listen 111.111.111.111:443
Listen 222.222.222.222:443

NameVirtualHost 111.111.111.111:80
NameVirtualHost 222.222.222.222:80
Run Code Online (Sandbox Code Playgroud)

在许多默认的Apache配置中,ListenNameVirtualHost指令都提供了通配符,或者全局适用于所有网络接口.由于您使用绑定到不同配置的多个IP地址,因此您需要在配置指令中比分发的默认配置文件更具体.

  • @Jay尝试`grep -r Listen/etc/apache2`和`grep -r NameVirtualHost/etc/apache2` (12认同)
  • +1 ......非常有帮助.在/etc/apache2/ports.conf中找到它们 (6认同)