基于 Apache IP 的托管设置和 httpd.conf 指令

基于 Apache IP 的托管设置和 httpd.conf 指令

在 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

  1. 不,你只需要像你的例子那样有 IP 的虚拟主机
  2. 不适用
  3. 不,没关系
  4. 这取决于您是否想在该 IP 上托管多个域。

相关内容