2011-11-07 82 views
7

目前我的Apache服務器設置像這樣Apache2是否支持子域的虛擬主機?

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

的問題是,一切都低於/var/www是從其他地方訪問。如果我有一個網頁/var/www/john/bio.html,那麼該網頁會從var/www/jane/

我想設置我的Apache服務器,像這樣

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

<VirtualHost *:80> 
ServerName www.john.example.com 
ServerAlias john.example.com 
DocumentRoot /var/www/john 
</VirtualHost> 

<VirtualHost *:80> 
ServerName www.jane.example.com 
ServerAlias jane.example.com 
DocumentRoot /var/www/jane 
</VirtualHost> 

借用腳本/圖片,使所有用戶john文件走在/var/www/john/文件夾,同樣對於用戶jane。然後,關閉符號鏈接(默認情況下),並且僅向下(默認情況下爲/var/www/user/)提供的訪問權限,我不必擔心john's網頁包括jane's網頁的腳本/圖像。

回答

21

僅使用本地度量(/etc/hosts而不是DNS)我發現這確實可行。

首先,將您的/etc/hosts文件更改爲具有所需網站名稱(www.example.com)和目標IP地址(192.168.1.1)的映射。我用我的本地IP地址。

IPAddress    Hostname     Alias 
-----------  -------------------------- ------------------ 
192.168.1.1  www.example.com    example.com 
192.168.1.1  www.john.example.com   john.example.com 
192.168.1.1  www.jane.example.com   jane.example.com 

Web瀏覽器將檢查您的/etc/hosts文件之前看萬維網。

下一頁瀏覽所有你的Apache配置文件(httpd.confapache2.confports.confconf.d/*),並確保在只有一個文件的命令NameVirtualHost *:80發出(它沒有被端口:80但如果它發出不止一次,你會得到this problem)。礦是在/etc/apache2/ports.conf發出的,所以如果你有必要的話,請把它放在那裏。最後,像這樣更新你的Apache配置文件(我的是/etc/apache2/sites-available/default)。

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

<VirtualHost *:80> 
    ServerName www.john.example.com 
    ServerAlias john.example.com 
    DocumentRoot /var/www/john 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.jane.example.com 
    ServerAlias jane.example.com 
    DocumentRoot /var/www/jane 
</VirtualHost> 

最後一步,你可能需要通過發出以下命令來添加網站到Apache(這一步是沒有必要的,如果你給所有的網站進入sites-available/default,而不是爲個人網站單獨的文件)。

# a2ensite www.example.com 
# a2ensite www.john.example.com 
# a2ensite www.jane.example.com 

這樣做了以後,john.example.com會去/var/www/john。該目錄將作爲根目錄,並且john將不再有權訪問www,因此無權訪問/var/www/jane

同樣,這樣做後,jane.example.com將去/var/www/jane。該目錄將作爲根目錄,並且jane將不再有權訪問www,因此無權訪問/var/www/john

符號鏈接關閉 - 截至default--既不目錄將能夠訪問對方

+0

這讓我想起,我忘了改變我的hosts文件。感謝過去的人。 –

+0

@MeowMix很高興我可以幫助至少一個人 – puk

+1

命令'a2ensite example.com'從'sites-available/example.com'創建符號鏈接到'sites-enabled/example.com',相反的命令是'a2dissite example.com ',這會禁用它。 – Honza