2016-11-18 78 views
0

我有一個Ubuntu服務器,有幾個子域運行虛擬主機(Apache)。大多數虛擬主機都在一個文件中,但是其中一個被分隔成兩個文件(因爲Let's Encrypt在一個.conf文件中不支持多個虛擬主機)。我只在其中一個子域上安裝了SSL證書;我目前不關心SSL的其他域。通過SSL端口防止子域重定向

我遇到的問題是,對其他子域的HTTPS請求被路由到一個子域,我不希望這樣。

因此,舉例來說,這裏是我的主.conf文件結構:

<VirtualHost *> 
    ServerAdmin [email protected] 
    ErrorLog /var/log/apache2/error.log 
    CustomLog /var/log/apache2/access.log combined 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName domain.com 
    ServerAlias www.domain.com 
    DocumentRoot /var/www/domain 
    <Directory "/var/www/domain"> 
     ... 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName sub.domain.com 
    DocumentRoot /var/www/sub_domain 
    <Directory "/var/www/sub_domain"> 
     ... 
    </Directory> 
</VirtualHost> 

這是我的SSL安裝的子域.conf文件結構:

<VirtualHost *:80> 
    ServerName ssl.domain.com 
    DocumentRoot /var/www/ssl_domain 
    <Directory "/var/www/ssl_domain"> 
     .... 
    </Directory> 
</VirtualHost> 

最後,這裏的.conf文件Let's Encrypt生成以偵聽HTTPS請求:

<IfModule mod_ssl.c> 
    <VirtualHost *:443> 
     ServerName ssl.domain.com 
     DocumentRoot /var/www/ssl_domain 
     <Directory "/var/www/ssl_domain"> 
      .... 
     </Directory> 
     SSLCertificateFile /path/to/cert.pem 
     SSLCertificateKeyFile /path/to/key.key 
     Include /etc/letsencrypt/options-ssl-apache.conf 
     SSLCertificateChainFile /path/to/chain.pem 
    </VirtualHost> 
</IfModule> 

正常的HTTP請求到y的域名工作正常。對啓用SSL的子域的HTTPS請求正常工作。但是HTTPS請求對除'ssl.domain.com'之外的任何域首先生成'您的連接不安全'錯誤,然後從'ssl.domain.com'加載。如果我是誠實的,我寧願它只是產生一個錯誤,並留下它。我如何防止重定向?

我要指出,我試着從改變SSL子域名的虛擬主機:

<VirtualHost *:443> 

到:

<VirtualHost ssl.domain.com:443> 

這是沒有效果的。

編輯:我也嘗試實施一個.htaccess重寫規則來改變https http。我認爲它不會起作用,因爲在虛擬主機遇到.htaccess之前請求會觸及虛擬主機,但我認爲我會試一試。是的,沒有運氣。

回答

0

因此,對於大家在他們的顯示器上大喊大叫,我在整個服務器上做了顯而易見的安裝SSL。

0

我想你應該定義NameVirtualHost,它將有助於處理一個ip的多個域。 在httpd.conf中定義NameVirtualHost

之後定義了會做這個工作。確保重新啓動apache。

+0

不幸的是,它似乎沒有辦法。我在我的httpd.conf中添加了'NameVirtualHost *:80',但問題仍然存在(另外,當我重新啓動Apache時,它現在給了我警告:'AH00548:NameVirtualHost沒有任何作用,並且會在下一版本中刪除' – CGriffin