Apache-2.2

僅子域上的 SSL

  • January 21, 2014

這應該是一個超級簡單的設置!

我正在嘗試僅在單個子域上啟用 SSL。但是,當我這樣做時,我的所有子域和主域最終都指向該子域的文件根目錄。

需要明確的是,當我指向瀏覽器時,我會得到以下文件根目錄:

http://domain.com       -> /var/www            [GOOD]
http://sub1.domain.com  -> /media/large/sub1   [GOOD]
http://sub2.domain.com  -> /var/www            [Strange, but doesn't bother me.  And error message would be better if possible, or a redirect to https.]
https://domain.com      -> /media/large/sub2   [BAD]
https://sub1.domain.com -> /media/large/sub2   [BAD]
https://sub2.domain.com -> /media/large/sub2   [GOOD]

那些 2

$$ BAD $$行業才是真正困擾我的。我不希望導航到這些 URL 的人訪問sub2文件根目錄。 這是我的ports.conf

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
   NameVirtualHost *:443
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

這是我所有的 /etc/apache2/sites-enabled

domain.com:

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

sub1.domain.com:

<VirtualHost *:80>
   ServerName sub1.domain.com
   DocumentRoot /media/large/sub1
</VirtualHost>

sub2.domain.com:

<VirtualHost *:443>
   ServerName sub2.domain.com:443
   DocumentRoot /media/large/sub2
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/apache.crt
   SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

如果重要的話,這是在一個完全預設的 Ubuntu 伺服器上。

您只在埠 443 上定義了一個 VirtualHost,因此任何對埠 443 的訪問都必須使用該配置,無論他們使用什麼域名。如果這不是您想要的,請為其他域設置 VirtualHost 配置並將它們指向不同的地方。

http://sub2.domain.com的問題相反- 您尚未為該域名定義 VirtualHost,因此它使用您的預設 VirtualHost,這是第一個,因此它使用 /var /www 作為根。

引用自:https://serverfault.com/questions/568870