2016-08-31 66 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>