Apache-2.2
嘗試設置虛擬主機以阻止 IP 訪問,用於三個域以及在一個域上使用 SSL 時
所以我希望這一切都在一台伺服器上:
- 3 domains / websites - SSL on one of them - nothing to be accessed by an IP address (e.g. 'domain.com' is okay, but not by just typing '123.55.44.123' into the browser)
我在用:
- Ubuntu 12.04 LTS - Apache
我已經設置了這些虛擬主機,並且一切都適用於非 SSL
<VirtualHost *:80> ServerName 123.55.33.123 DocumentRoot /var/www/random-empty-folder <Directory /> Options FollowSymLinks Deny from all # notice the deny here </Directory> </VirtualHost> <VirtualHost *:80> ServerName www.domain-one.com ServerAlias domain-one.com *.domain-one.com DocumentRoot /var/www/domain-one <Directory /> Options FollowSymLinks AllowOverride All </Directory> </VirtualHost> <VirtualHost *:80> ServerName www.domain-two.com ServerAlias domain-two.com *.domain-two.com DocumentRoot /var/www/domain-two <Directory /> Options FollowSymLinks AllowOverride All </Directory> </VirtualHost> ...etc. for 'domain-three'
問題是我無法為 SSL 配置它。我的標準 SSL 設置是這樣的,但它允許使用 IP 地址進行訪問。我只需要停止:
<VirtualHost *:443> ServerName www.domain-two.com:443 ServerAlias domain-two.com *.domain-two.com DocumentRoot /var/www/domain-two SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key <Directory /> Options FollowSymLinks AllowOverride All </Directory> </VirtualHost>
還有一個’default-ssl’站點/文件被禁用,所以不確定我是否應該對此做些什麼。我已經嘗試啟用它並進行更改,但大多數情況下我遇到了“預設重複”錯誤。
所以,基於上述設置,我只需要阻止訪問
$$ https $$://123.55.44.123。提前致謝。 我總是在進行更改後執行“service apache2 reload”,以防萬一有人想知道。
由於請求的域在 http 標頭中(因此當 apache 必須決定使用哪個 vhost 配置時仍然加密)apache 使用 IP 和埠來選擇要使用的 SSL vhost 配置,而不是域名。
編輯:
我應該在我的回答中提到SNI和其他幾個因素。SNI 是對 TLS 的補充,它允許伺服器在一個 IP/埠組合上使用多個命名的虛擬主機配置。但是由於您只有一個 *:443 VirtualHost 配置塊,因此 apache 將始終選擇它。
您想要做的事情是可能的,最簡單的方法是啟動 default-ssl 作為不針對特定域的請求的統稱。我不太清楚啟動 default-ssl 時出現“預設重複”錯誤是什麼意思,完整的錯誤消息可能會更有幫助。我可以建議將符號連結命名為 000-default-ssl,以便首先設置您在其中的任何選項。