我的目标是在多个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)也是如此。 我认为这是因为我的DNSlogging@和www指向1.1.1.1。 非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>
编辑:我做的每一个谷歌search都会返回大量的SNI指南(一个IP上的多个SSL虚拟主机 ,这不是我正在寻找的。
你似乎误解了DNS的工作原理。
在这种情况下,DNS将诸如example.com名称parsing为诸如203.0.113.1 IP地址。 您不能为不同的端口或服务使用不同的IP地址。
因此,您需要为HTTP,HTTPS和可能与该域名一起提供的所有其他服务使用相同的IP地址。
我认为这个问题是NameVirtualHost指令。 您想使用基于IP的虚拟主机 ,而不是基于名称。