2016-08-31 65 views
-1

我有4个虚拟主机。虚拟主机文件不会正确指向

我正在使用Zend服务器。 httpd.conf文件似乎包括使用通配符,像这样的虚拟主机conf文件:

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

我的虚拟主机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> 
+0

虚拟主机与SSL,除非它们是在同一个域中,并使用通配符证书不能使用相同的证书。对于多个证书,请为每个名称使用不同的IP。这里是来自Apache的wiki,供您参考http://wiki.apache.org/httpd/NameBasedSSLVHosts。 – alvits

+0

另外,当我在服务器本身上使用浏览器时,是否有这个原因,但如果我在网络上的浏览器上,它是行不通的? – NL3294

回答

0

我能够解决它。

下面的命令有助于了解如何分析虚拟主机。

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>