如何设置单个 Apache2 配置以在各自的 IP 地址上托管多个 HTTPS 站点?单个 IP 地址上也会有多个 HTTP 站点。
我不想使用服务器名称指示 (SNI)如所述这里,而我只关心重要的顶级 Apache 指令。也就是说,我只需要知道我的配置应该是什么样子的骨架。
基本设置如下:
Hosted on 1.1.1.1:80 (HTTP)
- example.com
- example.net
- example.org
Hosted on 2.2.2.2:443 (HTTPS)
- secure.com
Hosted on 3.3.3.3:443 (HTTPS)
- secure.net
Hosted on 4.4.4.4:443 (HTTPS)
- secure.org
以下是我目前拥有的重要配置指令,这是我最接近工作迭代的一次,但仍然没有成功。我知道我已经接近成功,只需要在正确的方向上稍加推动。
Listen 1.1.1.1:80
Listen 2.2.2.2:443
Listen 3.3.3.3:443
Listen 4.4.4.4:443
NameVirtualHost 1.1.1.1:80
NameVirtualHost 2.2.2.2:443
NameVirtualHost 3.3.3.3:443
NameVirtualHost 4.4.4.4:443
# HTTP VIRTUAL HOSTS:
<VirtualHost 1.1.1.1:80>
ServerName example.com
DocumentRoot /home/foo/example.com
</VirtualHost>
<VirtualHost 1.1.1.1:80>
ServerName example.net
DocumentRoot /home/foo/example.net
</VirtualHost>
<VirtualHost 1.1.1.1:80>
ServerName example.org
DocumentRoot /home/foo/example.org
</VirtualHost>
# HTTPS VIRTUAL HOSTS:
<VirtualHost 2.2.2.2:443>
ServerName secure.com
DocumentRoot /home/foo/secure.com
SSLEngine on
SSLCertificateFile /home/foo/ssl/secure.com.crt
SSLCertificateKeyFile /home/foo/ssl/secure.com.key
SSLCACertificateFile /home/foo/ssl/ca.txt
</VirtualHost>
<VirtualHost 3.3.3.3:443>
ServerName secure.net
DocumentRoot /home/foo/secure.net
SSLEngine on
SSLCertificateFile /home/foo/ssl/secure.net.crt
SSLCertificateKeyFile /home/foo/ssl/secure.net.key
SSLCACertificateFile /home/foo/ssl/ca.txt
</VirtualHost>
<VirtualHost 4.4.4.4:443>
ServerName secure.org
DocumentRoot /home/foo/secure.org
SSLEngine on
SSLCertificateFile /home/foo/ssl/secure.org.crt
SSLCertificateKeyFile /home/foo/ssl/secure.org.key
SSLCACertificateFile /home/foo/ssl/ca.txt
</VirtualHost>
不管怎样,我更愿意让每个 SSL 站点都使用自己的 IP,而不是将其中一个站点包含在主 VHOST IP 上。任何显示标准设置的链接都会受到欢迎!
答案1
重新启动 Apache,不要重新加载。重新加载时不会加载新配置的 SSL 证书。
放弃NameVirtualHost ...:443
指令;只有在执行 SNI 时才需要它们。
是的,保留该NameVirtualHost 1.1.1.1:80
指令,您的 80 端口主机需要该指令才能根据主机头对请求进行路由。