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


How to setup 2 Virtual Hosts on Apache where one host runs using SSL and other does not?

我在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)

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

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

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

我希望这张纸条对同一条船上的人有所帮助!