通常在一台Web Server上,會有數個不一樣的網站要執行,這時候各個網站的domain name就必須靠VirtualHost設定
VirtualHost基本設定
1 | #指定主機所有port 80所指定的虛擬主機 |
2 | NameVirtualHost *: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