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

Posted

技术标签:

【中文标题】如何在 Apache 上设置 2 个虚拟主机,其中一个主机使用 SSL 运行而其他不使用?【英文标题】:How to setup 2 Virtual Hosts on Apache where one host runs using SSL and other does not? 【发布时间】:2016-06-06 23:29:07 【问题描述】:

我在 Windows Server 2008 R2 上运行 Apache 2.4.18,在名为 SERVER1 的物理机器上运行 php 5.6.18,它已加入我的名为 example.com 的内部域。

我的 Apache 服务器默认开启 SSL。我需要运行 2 个不同的站点,其中一个站点使用 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.com 或 https://sub1.example.com 的用户定向到 https://sub1.example.com。

任何正在寻找http://sub2.example.com 或https://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】:

我的设置实际上运行良好。出于某种原因,Firefox 在浏览器中缓存 dns。

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

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

我希望这篇笔记对同一条船上的人有所帮助!

【讨论】:

以上是关于如何在 Apache 上设置 2 个虚拟主机,其中一个主机使用 SSL 运行而其他不使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XAMPP(Windows)上设置 Apache 虚拟主机 [关闭]

在一台 apache 服务器上设置多个 IP 地址

如何在Debian 10上安装Apache并设置虚拟主机

text 如何在Ubuntu 14.04上设置Apache虚拟主机

在 Windows 上设置 Apache 虚拟主机

如何在 XAMPP 上设置虚拟主机?