通常在一台Web Server上,會有數個不一樣的網站要執行,這時候各個網站的domain name就必須靠VirtualHost設定

VirtualHost基本設定

1#指定主機所有port 80所指定的虛擬主機
2NameVirtualHost *:80
3 
4<Virtualhost *:80>
5    #DNS
6    ServerName wp.johnsonlu.org
7     
8    #Web Root Path
9    DocumentRoot /var/www/test
10     
11    #Alias可以將DocumentRoot底下的路徑對應成特定目錄路徑
12    Alias /doc/ /var/www/test/doc/
13     
14    #控制目錄權限
15    <Directory "/usr/share/doc/">
16        #Options可以透過+號或-號來控制目錄權限,例如關閉Index目錄
17        #FollowSymLinks是允許連到DocumentRoot以外的其他目錄、MultiViews是多國語言支援
18        Options -Indexes FollowSymLinks MultiViews
19         
20        #AllowOverride是用來設定Override權限。None代表關閉.htaccess;FileInfo則是開啟
21        AllowOverride None
22         
23        #Order負責控制Deny和Allow執行順序
24        Order Deny,Allow
25        #控制要拒絕的連線
26        Deny from all
27        #控制可以通過的連線
28        Allow from 127.0.0.0/255.0.0.0
29    </Directory>
30     
31    #Log
32    ErrorLog /var/log/error_log
33</Virtualhost>

Alias也可以透過正規表示法設定成pattern,可以參考mod_alias
Directory設定可以參考Directory Directive
Allow和Deny的部份可以參考mod_access_compat

另外也可以把VirtualHost設定成動態的pattern
(需要開啟mod_vhost_alias module)

1<VirtualHost *:80>
2        ServerAlias *.api.johnsonlu.org
3        VirtualDocumentRoot /home/johnsonlu/public_html/www/api/%0/public
4</VirtualHost>

這樣一來,假設我有一個/home/johnsonlu/public_html/www/api/test.api.johnsonlu.org/public的路徑,就可以對應到test.api.johnsonlu.org

VirtualDocumentRoot的字串pattern可以參考 mod_vhost_alias

Categories: Apache