【问题标题】:Virtual host files won't direct correctly虚拟主机文件无法正确定向
【发布时间】:2017-01-07 09:53:59
【问题描述】:

我有 4 个虚拟主机。

我正在使用 Zend 服务器。 httpd.conf 文件似乎包含使用通配符的虚拟主机 conf 文件,如下所示:

Include "C:\blah\blah2\Zend\ZendServer/etc/sites.d/vhost_*.conf"

我的虚拟主机配置文件如下。现在,让我困惑的是 当我转到https://www-test.blah.comhttps://www-test2.blah.com 时,它工作正常。但是当我转到https://review-test.blah.com 时,它会转到 www-test.blah.com

这让我感到困惑,因为据我所知,一切看起来都以相同的方式设置。

是否有可能由于虚拟主机文件是通过通配符包含在内的,所以包含它们的顺序是否重要?如果它是字母顺序,那么它将包含在显示的顺序中。

我注意到的一件事是,如果我在服务器上,https://review-test.blah.com 工作正常。但是当我在网络的其他地方时,它会将我定向到https://www-test2.blah.com

或者是否有其他因素会影响 Apache 选择虚拟主机的方式?例如,证书文件重要吗?

Listen 80
Listen 443
<VirtualHost *:80>
    ServerName portal.blah.com:80

</VirtualHost>

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

NameVirtualHost review-test.blah.com:443

<VirtualHost review-test.blah.com:443>
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE

    SSLEngine on        

    SSLCertificateFile "C:\blah\blah\Apache2\conf\extra\ssl\review-test.blah.com.crt"
    SSLCertificateKeyFile "C:\blah\blah\Apache2\conf\extra\ssl\review-test.blah.com.key"

    ServerName review-test.blah.com
    ServerAlias review-test.blah.com

</VirtualHost>

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

NameVirtualHost www-test.blah.com:443

<VirtualHost www-test.blah.com:443>
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE

    SSLEngine on
    SSLCertificateFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.crt"
    SSLCertificateKeyFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.key"


    ServerName www-test.blah.com
    ServerAlias www-test.blah.com

</VirtualHost>

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

NameVirtualHost www-test2.blah.com:443

<VirtualHost www-test2.blah.com:443>
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE

    SSLEngine on
    SSLCertificateFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.crt"
    SSLCertificateKeyFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.key"


    ServerName www-test2.blah.com
    ServerAlias www-test2.blah.com
</VirtualHost>

【问题讨论】:

  • 具有 SSL 的基于名称的 VirtualHost 不能使用相同的证书,除非它们在同一个域中并使用通配符证书。对于多个证书,为每个名称使用不同的 IP。这是来自 apache 的 wiki 供您参考 wiki.apache.org/httpd/NameBasedSSLVHosts
  • 另外,当我在服务器本身上使用浏览器时它可以工作,但是如果我在网络上的浏览器上它就不能工作,这是有原因的吗?

标签: apache virtualhost


【解决方案1】:

我能够修复它。

下面的命令有助于查看虚拟主机是如何被解析的。

httpd -S 

我的解决方案如下:

Listen 80
Listen 443
<VirtualHost *:80>
    ServerName portal.blah.com:80

</VirtualHost>

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



<VirtualHost *:443>
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE

    SSLEngine on        

    SSLCertificateFile "C:\blah\blah\Apache2\conf\extra\ssl\review-test.blah.com.crt"
    SSLCertificateKeyFile "C:\blah\blah\Apache2\conf\extra\ssl\review-test.blah.com.key"

    ServerName review-test.blah.com
    ServerAlias review-test.blah.com

</VirtualHost>

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

NameVirtualHost *:443

<VirtualHost *:443>
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE

    SSLEngine on
    SSLCertificateFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.crt"
    SSLCertificateKeyFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.key"


    ServerName www-test.blah.com
    ServerAlias www-test.blah.com

</VirtualHost>

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

<VirtualHost *:443>
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE
    OTHER STUFF HERE

    SSLEngine on
    SSLCertificateFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.crt"
    SSLCertificateKeyFile "C:\blah\blah\Apache2\conf\extra\ssl\star.blah.com.key"


    ServerName www-test2.blah.com
    ServerAlias www-test2.blah.com
</VirtualHost>

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 2020-05-25
    • 2012-06-15
    • 2012-11-04
    • 2018-10-02
    • 2016-04-14
    • 2017-01-20
    • 2021-07-29
    • 2016-02-28
    相关资源
    最近更新 更多