Apache2 将所有 HTTPS 流量重定向到单个页面

Apache2 将所有 HTTPS 流量重定向到单个页面

我的 Apache2 出现了问题,我可能配置错误,但我不知道是什么问题。

我所有的 https 流量总是重定向到单个页面,我无法添加不同的 https 页面。

这是我的配置:

    <VirtualHost *:80>
            ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                allow from all
                AddHandler cgi-script .py
        </Directory>


        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


  <VirtualHost *:80>
    DocumentRoot /var/www/www1/
    ServerName www1.lucas.myurl.be
    </VirtualHost>

  <VirtualHost *:80>
    DocumentRoot /var/www/www2/
    ServerName www2.lucas.myurl.be
    </VirtualHost>

<VirtualHost *:443>
    DocumentRoot /usr/share/roundcube/
    ServerName webmail.lucas.myurl.be
    SSLEngine on
    SSLCertificateFile PlaceOFMy1stCert
    SSLCertificateKeyFile PlaceOfMy1stKey
  </VirtualHost>

 <VirtualHost *:80>
   DocumentRoot /usr/share/roundcube/
    ServerName webmail.lucas.myurl.be
    Redirect / https://webmail.lucas.myurl.be/
</VirtualHost>

 <VirtualHost *:443>
    DocumentRoot /var/www
    ServerName secure.lucas.myurl.be
    SSLEngine on
    SSLCertificateFile My2ndCert
    SSLCertificateKeyFile My2ndKey
    </VirtualHost>


 <VirtualHost *:80>
    DocumentRoot /var/www
    ServerName secure.lucas.myurl.be
    Redirect / https://secure.lucas.myurl.be/
</VirtualHost>

问题是当我重新启动 Apache2 时收到默认覆盖警告,但我不明白它来自哪里。

 [warn] _default_ VirtualHost overlap on port 443, the first has precedence
httpd not running, trying to start

因此,当我访问 secure.lucas.myurl.be 时,它​​会转到https://webmail.lucas.myurl.be,而不是去https://secure.lucas.myurl.be

那么我需要在配置中添加什么才能使其重定向到正确的 SSL 页面而不是将所有内容重定向到第一个 443 重定向?

答案1

很正常的一个问题。每个 IP 只能有一个 SSL 证书。这里所有接口上都有 2 个 SSL 块,因此 apache 只会采用第一个。

您也可能仍启用了默认 SSL vhost 2。

使用以下命令检查哪些虚拟主机已启用:

 apache2ctl -S

这将为您提供一个列表。

您可以在 1 个 IP 上拥有多个 SSL 块,但是所有块必须使用相同的证书。

答案2

听起来好像没有启用 SNI。这可以解释为什么它们都转到同一页面。如果您正在运行 Debian Lenny 或 Debian Squeeze,我相信它会起作用。

查看这一页它描述了如何在主机上启用 SNI。请注意,这与基于名称的虚拟主机一起使用。从您的配置来看,您似乎正在使用命名虚拟主机。

相关内容