在 apache 中,我想为 2 个站点设置“基于 ip”的托管,并为它们启用 SSL。但是,我不清楚如何配置 httpd.conf 文件。
问题:
1) 我是否需要 NameVirtualHost 指令来进行基于 ip 的设置?在 Apache 的网站上,它说基于名称的设置需要它,但没有提到基于 ip 的设置。
2) 如果需要 NameVirtualHost,描述和数量必须与 VirtualHost 指令的数量相匹配吗?例如,我可以说“NameVirtualHost *:80”,然后使用 and 吗?或者,我需要“NameVirtualHost IP_ADDRESS_1:80”和“NameVirtualHost IP_ADDRESS_2:80”
3) 如果 ServerName 是 example1.com(不带“www”),会有什么区别吗?
4)在VirtualHost中,我是否需要为ServerAlias设置一个值,例如IP本身?
我要分享的一件事是,如果您有(可能包括)ssl.conf,您不应该将“Listen 443”添加到您的httpd.conf中,否则在重新加载时,apache将抛出“地址已在使用中:make_sock:无法绑定到地址[::]:443”错误。
#see above questions about below directive
#NameVirtualHost *:80
#NameVirtualHost *:443
...
<VirtualHost IP_ADDRESS_1:80>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost IP_ADDRESS_2:80>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>
<VirtualHost IP_ADDRESS_1:443>
DocumentRoot /www/example1
ServerName www.example1.com
SSLEngine on
SSLProtocol all
SSLCertificateFile /home/web/example1_certs/public.crt
SSLCertificateKeyFile /home/web/example1_certs/private.key
SSLCACertificateFile /home/web/example1_certs/intermediate.crt
</VirtualHost>
<VirtualHost IP_ADDRESS_2:443>
DocumentRoot /www/example2
ServerName www.example2.org
#yes, in below, I'm using example1.com's certificate, which will throw a browser warning.. that's intentional
SSLEngine on
SSLProtocol all
SSLCertificateFile /home/web/example1_certs/public.crt
SSLCertificateKeyFile /home/web/example1_certs/private.key
SSLCACertificateFile /home/web/example1_certs/intermediate.crt
</VirtualHost>
答案1
- 不,你只需要像你的例子那样有 IP 的虚拟主机
- 不适用
- 不,没关系
- 这取决于您是否想在该 IP 上托管多个域。