2014-01-13 14 views
2

我有很多服務在同一臺機器上運行,其中一個使用SSL,比如說「c3po.com」。 我的服務器的網址是https://c3po.com,http://r2d2.comhttp://jarjar.comApache:在服務器名稱不匹配時禁用重定向到默認虛擬主機

問題是,如果我鍵入https://r2d2.com apache會將我重定向到https://c3po.com,甚至不更改url。換句話說,我會看到c3po服務,我的瀏覽器顯示http://r2d2.com

我明白,當Apache可以不完全是一個虛擬主機匹配它使用的第一個載入的IP相匹配:端口,從而不存在:

<VirtualHost *:443> 
    ServerName r2d2.com 
    ... 

它將在拿起唯一的虛擬主機:443發現,那就是:

<VirtualHost *:443> 
    ServerName c3po.com 
    ... 

我真正想要的是,當用戶鍵入https://r2d2.comhttps://jarjar.com一個錯誤頁面顯示出來,因爲這些服務(啓用SSL通過HTTP)根本不存在!我怎樣才能做到這一點?

回答

4

檢查

了NameVirtualHost *:443

在你的主配置啓用。然後創建一個VirtualHost,在您的錯誤頁面上偵聽端口443,然後使用c3po.com的配置創建另一個VirtualHost。如果任何用戶將名稱解析爲服務器的IP(他們將針對所有站點),則他們將轉到默認站點,除非他們要使用c3po。

東西沿着以下的線應該工作:

默認:

<VirtualHost *:443> 
    ServerName _default_https 
    DocumentRoot /path/to/error/page 
    <Directory /path/to/error/page> 
    ... 
    </Directory> 
</VirtualHost> 

C3PO:

<VirtualHost *:443> 
    ServerName c3po.com 
    ServerAlias www.c3po.com 
    DocumentRoot /path/to/c3po 
    <Directory /path/to/c3po> 
    ... 
    </Directory> 
</VirtualHost>