Apache2 中每个 IP 有多个命名的虚拟主机

Apache2 中每个 IP 有多个命名的虚拟主机

我见过很多类似问题关于托管多个虚拟主机(每个 IP 一个),但找不到有关每个 IP 多个虚拟主机的虚拟主机。

简而言之,我有一台需要托管多个 SSL 证书的 Apache2 服务器。我在机器上有两个独立的 IP。我在 IP(a) 上有三个域名,在 IP(b) 上有一个带有多个子域名的域名,如下所示:

IP(a) - SSL(a)
 - https:://domain1
 - domain2
 - domain3

IP(b) - SSL(b)
 - https://sub1.domain4
 - https://sub2.domain4
 - https://sub3.domain4

由于我最近添加了IP(b),我的第一步是转换到该 IP。在、、条目domain4的 vhost conf 文件中,我切换到。重新启动 Apache 后,出现以下错误:sub1sub2sub3.domain<VirtualHost *:80><VirtualHost IP(b):80>

[警告] VirtualHost 173.230.156.48:80 与 VirtualHost 173.230.156.48:80 重叠,前者优先,也许您需要一个 NameVirtualHost 指令

NameVirtualHost我的 apache.conf 中有以下条目:

NameVirtualHost *:80
NameVirtualHost *:443

有什么关于正确操作方法的提示吗?谢谢。

更新:

根据 Shane 的回答其他的,我已在配置中更改了以下内容,但现在在提供 IP(a):443 内容时遇到问题:

端口配置文件

Listen IP(a):80
Listen IP(b):80
<IfModule mod_ssl.c>
    Listen IP(a):443
    Listen IP(b):443
</IfModule>

虚拟配置文件

NameVirtualHost IP(a):80
NameVirtualHost IP(b):80
NameVirtualHost IP(a):443
NameVirtualHost IP(b):443

我希望在 IP(a) 上提供服务的所有非 SSL 站点现在都是:

<VirtualHost IP(a):80>

IP(a) 上的所有 SSL 站点现在:

<VirtualHost IP(a):443>

IP(b) 上的所有非 SSL 站点现在:

<VirtualHost IP(b):80>

IP(b) 上的所有 SSL 站点现在:

<VirtualHost IP(b):443>

IP(a):80、IP(b):80 和 IP(b):443 上的所有站点均已正确提供服务。IP(a):443 上没有提供任何服务,当启动 Apache 时,我收到以下警告:

[warn] _default_ VirtualHost overlap on port 443, the first has precedence

我已修改我的default文件来响应 IP(a):

<VirtualHost IP(a):80>

并修改了我的default-ssl文件以响应IP(a):

<VirtualHost IP(a):443>

上述内容有什么明显错误吗?我尝试过用多种不同的方法更改设置,但似乎总是会出现上述警告。

答案1

您的NameVirtualHost指令必须与您的定义完全匹配<VirtualHost>

因此如果你有:

<VirtualHost 192.0.2.1:80>
  ServerName domain1
</VirtualHost>
<VirtualHost 192.0.2.1:80>
  ServerName domain2
</VirtualHost>

...则不NameVirtualHost *:80适用,您需要使用NameVirtualHost 192.0.2.1:80

答案2

你可能想查看这些链接:

http://de.wikipedia.org/wiki/服务器名称指示作为解释

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

关于如何配置。

希望这可以帮助。

相关内容