Linux下虛擬網域名稱的實現(2)

來源:互聯網
上載者:User


目前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

這裡的 vhostdbm 檔案格式見"CGI 程式的編製" 。 (出處:PConline)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.