Linux下虛擬域名的實現(2)
添加時間:2010-11-9
添加:
admin
目前Linux操作系統十分火爆,所以很多朋友希望了解一下Linux下虛擬域名的實現過程。下面就基于目前比較流行的RedHat來討論一下。二、Apache服務器的配置
Apache服務器是目前互聯網上使用最多的Web服務器,它可以維護非常繁忙的站點。RedHat 6.0捆綁了Apache Web Server 1.3。它的配置文件位于"/etc/httpd/conf"目錄下,有httpd.conf、srm.conf、access.conf,下面討論一下與虛擬域名有關的配置:
1、靜態配置
修改配置文件 httpd.conf 的步驟:
(1) 首先設置UseCanonicalName為off。它指示用服務器Host:header的內容代替ServerName 的值來提供給環境變量SERVER_NAME。
(2) 然后加入:
NameVirtualHost xxx.xxx.xxx.xxx其中xxx.xxx.xxx.xxx為所要配置的虛擬服務器的IP地址。在此可配置多個虛擬IP地址,當然要與DNS服務器中的配置一致。(注意:這里要用IP地址,不能用域名。)
(3) 接下來為每個虛擬域名加入一段記錄:
< virtualhost xxx.xxx.xxx.xxx>
.....
< /virtualhost>
xxx.xxx.xxx.xxx要和NameVirtualHost配置的IP地址一致。在兩個標志之間可加入的配置參數有:
ServerName后面跟你要增加的虛擬域名,如aaa.domain.com ;
Documentroot如果你映射到本機的路徑就加在后面,如"/home/aaa" ;
redirect如果你映射到遠端的URL可加在后面,有兩個參數,第一個是虛擬域名的相對路徑,第二個是遠端站點的URL;
ServerAlias后可加入本域名的別名,可使用通配符,如*.aaa.domain.com 。
下面舉兩個例子:
例3、映射到本機的物理路徑:
< virtualhost xxx.xxx.xxx.xxx>
DocumentRoot "/home/test"
ServerName test.domain.com
< virtualhost> 例4、映射到遠端的URL:
< virtualhost xxx.xxx.xxx.xxx>
ServerName test1.doamin.com
redirect / http://test.domain1.com/welcome.htm
< /virtualhost>
還有一些參數,象log文件的位置、超時的設置、緩沖區的設置等等,在此不一一介紹,可以參考Apache服務器的在線幫助文件。配置好httpd.conf文件后需要重新啟動Apache的后臺守護進程httpd,
[root@domain /root]# /etc/rc.d/init.d/httpd restart
每增加一個虛擬域名就要增加一段位于 < VirtualHost...>...< /VirtualHost> 之間的配置代碼,而且只有在重新啟動 httpd 后新配置才能生效。
2、動態配置
可以發現,如果要配置大量的虛擬域名將大大增加配置文件的長度,這樣還會使Apache啟動變慢,占用更多的內存,而且也不容易實現在線申請?梢酝ㄟ^選擇動態方式來配置。這樣不必事先寫好配置,而是通過編寫一定的動態規則來自動生成或隨時從獨立的配置文件中讀取信息。
Apache有一個強大的擴展功能,即模塊(Modules)的特性。模塊可對服務器的功能進行擴充,它在運行和使用時才裝入服務器,這樣比一直放入服務器中要節省內存空間,同時也比調用外部CGI程序速度快。
現在使用一個功能強大的模塊來實現動態配置虛擬域名,這就是mod_rewrite。它負責偵聽從客戶機送出的URL地址,并基于一組規則表達式對該URL來進行重寫。這類似于URL別名概念,但它更進了一步,輸出的URL可以映射到其他主機的任何URL地址上。 修改配置文件httpd.conf的步驟:
(1) 先設置UseCanonicalName為off 。
(2) 使用RewriteEngine on打開rewrite引擎。用RewriteMap設定配置文件的位置和屬性,用RewriteCond和RewriteRule制定相應的規則。
例5、httpd.conf 文件中相關配置的一個例子:
RewriteEngine on
RewriteMap lowercase int:tolower
# 定義獨立的配置文件的位置
RewriteMap vhost dbm:/www/conf/vhostdbm
# 利用獨立的配置文件重映射虛擬域名
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服務器是目前互聯網上使用最多的Web服務器,它可以維護非常繁忙的站點。RedHat 6.0捆綁了Apache Web Server 1.3。它的配置文件位于"/etc/httpd/conf"目錄下,有httpd.conf、srm.conf、access.conf,下面討論一下與虛擬域名有關的配置:
1、靜態配置
修改配置文件 httpd.conf 的步驟:
(1) 首先設置UseCanonicalName為off。它指示用服務器Host:header的內容代替ServerName 的值來提供給環境變量SERVER_NAME。
(2) 然后加入:
NameVirtualHost xxx.xxx.xxx.xxx其中xxx.xxx.xxx.xxx為所要配置的虛擬服務器的IP地址。在此可配置多個虛擬IP地址,當然要與DNS服務器中的配置一致。(注意:這里要用IP地址,不能用域名。)
(3) 接下來為每個虛擬域名加入一段記錄:
< virtualhost xxx.xxx.xxx.xxx>
.....
< /virtualhost>
xxx.xxx.xxx.xxx要和NameVirtualHost配置的IP地址一致。在兩個標志之間可加入的配置參數有:
ServerName后面跟你要增加的虛擬域名,如aaa.domain.com ;
Documentroot如果你映射到本機的路徑就加在后面,如"/home/aaa" ;
redirect如果你映射到遠端的URL可加在后面,有兩個參數,第一個是虛擬域名的相對路徑,第二個是遠端站點的URL;
ServerAlias后可加入本域名的別名,可使用通配符,如*.aaa.domain.com 。
下面舉兩個例子:
例3、映射到本機的物理路徑:
< virtualhost xxx.xxx.xxx.xxx>
DocumentRoot "/home/test"
ServerName test.domain.com
< virtualhost> 例4、映射到遠端的URL:
< virtualhost xxx.xxx.xxx.xxx>
ServerName test1.doamin.com
redirect / http://test.domain1.com/welcome.htm
< /virtualhost>
還有一些參數,象log文件的位置、超時的設置、緩沖區的設置等等,在此不一一介紹,可以參考Apache服務器的在線幫助文件。配置好httpd.conf文件后需要重新啟動Apache的后臺守護進程httpd,
[root@domain /root]# /etc/rc.d/init.d/httpd restart
每增加一個虛擬域名就要增加一段位于 < VirtualHost...>...< /VirtualHost> 之間的配置代碼,而且只有在重新啟動 httpd 后新配置才能生效。
2、動態配置
可以發現,如果要配置大量的虛擬域名將大大增加配置文件的長度,這樣還會使Apache啟動變慢,占用更多的內存,而且也不容易實現在線申請?梢酝ㄟ^選擇動態方式來配置。這樣不必事先寫好配置,而是通過編寫一定的動態規則來自動生成或隨時從獨立的配置文件中讀取信息。
Apache有一個強大的擴展功能,即模塊(Modules)的特性。模塊可對服務器的功能進行擴充,它在運行和使用時才裝入服務器,這樣比一直放入服務器中要節省內存空間,同時也比調用外部CGI程序速度快。
現在使用一個功能強大的模塊來實現動態配置虛擬域名,這就是mod_rewrite。它負責偵聽從客戶機送出的URL地址,并基于一組規則表達式對該URL來進行重寫。這類似于URL別名概念,但它更進了一步,輸出的URL可以映射到其他主機的任何URL地址上。 修改配置文件httpd.conf的步驟:
(1) 先設置UseCanonicalName為off 。
(2) 使用RewriteEngine on打開rewrite引擎。用RewriteMap設定配置文件的位置和屬性,用RewriteCond和RewriteRule制定相應的規則。
例5、httpd.conf 文件中相關配置的一個例子:
RewriteEngine on
RewriteMap lowercase int:tolower
# 定義獨立的配置文件的位置
RewriteMap vhost dbm:/www/conf/vhostdbm
# 利用獨立的配置文件重映射虛擬域名
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1
新文章:
- 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規則詳解