如何在 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 虚拟主机 [关闭]