Apache 多个 SSL 站点、多个 IP,无需修改 DNS

Apache 多个 SSL 站点、多个 IP,无需修改 DNS

我的目标是在多个 IP 地址上拥有多个 SSL 站点,但我在 Apache 设置方面遇到困难:

// I want this:
http + https example.com
http + https example.net

// On these IPs:
http example.com 1.1.1.1:80
http example.net 1.1.1.1:80
https example.com 2.2.2.2:443
https example.net 3.3.3.3:443

请注意,这 4 个站点的 DocumentRoot 都不同。

在我当前的 Apache 设置中,当客户端访问https://example.com,Apache 提供 1.1.1.1 (连接被拒绝,假设为 :443),而不是 2.2.2.2:443。以下情况也一样https://example.net(而不是 3.3.3.3:443)。我认为这是因为我的 DNS a 记录指向@1.1.1.1 www。非 SSL 1.1.1.1 基于名称的虚拟主机工作正常。

我不确定这是否故意的Apache 行为与否。我的问题的核心是,“这是 Apache 的预期行为吗?如果是这样,有人可以给我举个例子说明这种情况下 IP 应该是什么样子吗?http 和 https example.com 是否都应该在一个 IP 上,而不是我像这样将它们分开?”

我的 httpd.conf 现在是这样的:

# http example.com and http example.net:
Listen 1.1.1.1:80
# https example.com:
Listen 2.2.2.2:443
# https example.net:
Listen 3.3.3.3:443

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName example.net
    DocumentRoot /var/www/example.net
</VirtualHost>

<VirtualHost 2.2.2.2:443>
    SSLEngine on
    ServerName example.com
    DocumentRoot /var/www/example.com-ssl
</VirtualHost>

<VirtualHost 3.3.3.3:443>
    SSLEngine on
    ServerName example.net
    DocumentRoot /var/www/example.net-ssl
</VirtualHost>

编辑:我每次在谷歌上搜索都会得到大量的SNI 指南(一个 IP 上的多个 SSL 虚拟主机,这不是我想要的。

答案1

您似乎误解了 DNS 的工作原理。

在这种情况下,DNS将名称解析为example.comIP地址,例如203.0.113.1。您不能为不同的IP地址设置不同的IP地址港口或者服务

因此,您需要对 HTTP、HTTPS 以及可能通过该域名提供的所有其他服务使用相同的 IP 地址。

答案2

我认为问题在于NameVirtualHost指令。你想使用基于 IP 的虚拟主机,不是基于名称的。

相关内容