Apache多个IP和SSL

我有一个运行两个子域的Apache服务器,其中一个configuration了SSL。

为了让另一个子域工作,我们当然必须build立一个新的IP(因为另一个是用SSLconfiguration的)。

但是,我们不能达到我们的新的子域,我们不知道为什么。 Apacheconfiguration应该是可以的。

这是我们的虚拟主机指令的一个片段:

# ssl domain <VirtualHost 1.2.3.4.5:80> ServerName sub1.example.com DocumentRoot /var/www/sub1 <Directory "/var/www/sub1"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> # "regular" domain <VirtualHost 2.3.4.5.6:80> DocumentRoot /var/www/sub2 ServerName sub2.example.com <Directory "/var/www/sub2"> AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

请求sub1.example.com是好的,但是当我们尝试sub2.example.com时没有任何反应。

Apache的“默认”configuration设置为:

 Listen 80 ServerName sub1.example.com 

我们在CentOS 6上运行Apache / 2.2.15。

对于初学者来说,确保你在你的configuration中有这样的东西:

 NameVirtualHost *:80 NameVirtualHost *:443 

正如在备注中提到的那样,我向你保证,虽然每个唯一的SSL虚拟主机都需要它自己的IP地址,但是你可以在任何一个IP上拥有尽可能多的非SSL(ala端口80)虚拟主机。

你很可能遇到的问题是Apache默认的mod_sslconfiguration文件的设置方式。

在CentOS上它应该在/etc/httpd/conf.d/ssl.conf

您将看到,出于某种原因,Apache(CentOS?)具有在该文件中使用_default_的预configurationSSL vhost – 与httpd.conf底部的示例或位于Debian系统上的sites-available条目相对应的示例。 。

我敢打赌,这就是为什么您的初始SSLconfiguration从来没有工作,因为它是在默认的ssl.conf文件中使用默认的SSL虚拟主机configuration的相同的IP( 默认 )双倍。

通常,当我build立一个新的CentOS Apache框时,我将该文件中的整个VirtualHost条目注释掉,并将所需的configuration放在httpd.conf

我设法通过为sub1.example.com创build另一个vhost指令来监听端口80。

我的猜测是,我们的供应商已经做了一个破解,将所有请求从第一个IPredirect到HTTPS。 这显然是我们需要一个额外的专用IP的原因..有点奇怪的是,在端口80上侦听sub1.example.com指令不会做一件事情,除了确保请求不要去sub2 .example.com的。 通过HTTP访问sub1.example.com的用户被redirect到HTTPS(某处)。

有用 :)

 NameVirtualHost *:80 NameVirtualHost *:443 # sub1.example.com PORT 80 <VirtualHost *:80> ServerName sub1.example.com DocumentRoot /var/www/sub1 <Directory "/var/www/sub1"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> # sub1.example.com SSL <VirtualHost *:443> ServerName sub1.example.com DocumentRoot /var/www/sub1 <Directory "/var/www/sub1"> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> # sub2.example.com PORT 80 <VirtualHost *:80> DocumentRoot /var/www/sub2 ServerName sub2.example.com <Directory "/var/www/sub2"> AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost>