如何在Apache上设置2个虚拟主机,其中一个主机使用SSL运行而其他主机不运行?

时间:2016-02-24 15:27:47

标签: php apache ssl vhosts apache2.4

我在一台名为SERVER1的物理机器上运行Windows Server 2008 R2和PHP 5.6.18上的Apache 2.4.18,并且它已加入我的内部域example.com

默认情况下,我的Apache服务器已启用SSL。我需要运行2个不同的站点,其中一个站点使用SSL而另一个站点不使用SSL。

以下是我添加到httpd-vhosts.conf文件中以试图让它工作的内容

我怎样才能让它发挥作用?

<VirtualHost *:80>
   ServerName SERVER1.example.com
   Redirect permanent "C:/phpsites/app1" https://sub1.example.com/
</VirtualHost>


<VirtualHost *:80>

    DocumentRoot "C:/phpsites/app2/public"
    ServerName SERVER1.example.com
    ServerAlias sub2.example.com

    SSLEngine Off

    <Directory "C:/phpsites/app2/public">
        AllowOverride All
        Require all Granted
    </Directory>

</VirtualHost>


<VirtualHost *:443>

    DocumentRoot "C:/phpsites/app1"
    ServerName SERVER1.example.com
    ServerAlias sub1.example.com

    SSLEngine On
    SSLCertificateFile "c:/Apache24/conf/certificate/cert.crt"
    SSLCertificateKeyFile "c:/Apache24/conf/certificate/private.key"

    <Directory "C:/phpsites/app1">
        AllowOverride All
        Require all Granted
    </Directory>

</VirtualHost>

上述设置无法正常工作。当我转到 https ://sub1.example.com时,Apache会将我重定向到正确的网站C:/ phpsites / app1。当我转到 http ://sub1.example.com时,它会将我重定向到C:/ phpsites / app2 / public,但我不希望这种情况发生。当我转到http://sub2.example.com时,由于某种原因,我会被重定向到 https ://sub1.example.com。

我需要将正在寻找http://sub1.example.comhttps://sub1.example.com的用户定向到 https ://sub1.example.com。

任何正在寻找http://sub2.example.comhttps://sub2.example.com的用户都可以访问 http ://sub2.example.com

这是我执行httpd -D DUMP_VHOSTS

时得到的结果
> VirtualHost configuration:
> 
> *:80 is a NameVirtualHost
> 
> 
> default server SERVER1.example.com
> (C:/Apache24/conf/extra/httpd-vhosts.conf:27) port 80 namevhost
> SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:27)
> 
> port 80 namevhost SERVER1.example.com
> (C:/Apache24/conf/extra/httpd-vhosts.conf:34) alias sub2.example.com
> 
> 
> *:443 is a NameVirtualHost default server SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:52) port 443 namevhost
> SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:52)
> alias sub1.example.com
> 
> port 443 namevhost SERVER1.example.com
> (C:/Apache24/conf/extra/httpd-ssl.conf:85)

1 个答案:

答案 0 :(得分:0)

我的设置实际上工作正常。出于某种原因,Firefox正在浏览器中缓存dns。

我不得不删除我的临时文件,一切都像魅力一样!

困扰我,想知道为什么Firefox会缓存dns!

我希望这张纸可以帮助同一条船上的人!