Apache虛擬主機的配置
一、使用 mod_vhost_alias
1、簡單的動態虛擬主機
# 從 Host: 頭中取得服務器名字 Server Name
UseCanonicalName Off
# 這里的日志格式,可以在將來通過第一個參數域來分隔不同的虛擬主機的日志
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
# 在返回請求的文件名的路徑中包含進服務器名字: server name
VirtualDocumentRoot /www/hosts/%0/docs
VirtualAlias /www/hosts/%0/cgi-bin
2、更為有效的基于 IP 地址的虛擬主機
# 從 IP 地址反解析得到服務器名字(server name)
UseCanonicalName DNS
# 在日志中包含 IP 地址,便于后續分發
LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
# 在文件路徑中包含 IP 地址
VirtualDocumentRootIP /www/hosts/%0/docs
VirtualAliasIP /www/hosts/%0/cgi-bin
二、使用 mod_rewrite
1、使用 mod_rewrite 實現簡單的動態虛擬主機
# 從 Host: 頭獲取服務器名字
UseCanonicalName Off
# 可分割的日志
LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
<Directory /www/hosts>
# ExecCGI is needed here because we can't force
# CGI execution in the way that Alias does
Options FollowSymLinks ExecCGI
</Directory>
# 接下來是關鍵部分
RewriteEngine On
# a ServerName derived from a Host: header may be any case at all RewriteMap lowercase int:tolower
## 首先處理普通文檔:
# 允許變名 /icons/ 起作用 - 其他變名類同
RewriteCond %{REQUEST_URI} !^/icons/
# 允許 CGIs
RewriteCond %{REQUEST_URI} !^/cgi-bin/
# 開始“變戲法”
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1
## 現在處理 CGIs - 我們需要強制使用一個 MIME 類型
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]
# 好了!
2、使用獨立的虛擬主機配置文件 vhost.map
vhost.map 文件包含了類似下面的內容:
www.customer-1.com /www/customers/1
www.customer-2.com /www/customers/2
# ...
www.customer-N.com /www/customers/N
http.conf 包含了:
RewriteEngine on
RewriteMap lowercase int:tolower
# 定義映像文件
RewriteMap vhost txt:/www/conf/vhost.map
# 和上面的例子一樣,處理變名
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# 這里做基于文件的重新映射
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1
關鍵字:Apache、虛擬主機、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解