TShopping

 找回密碼
 註冊
搜索
查看: 1163|回復: 3

[教學] 虛擬主機類型

[複製鏈接]
發表於 2008-9-16 16:59:46 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
架構虛擬主機時可供選擇的不同類型網站,其中包含的類型有:IP-based虛擬主機、Name-based虛擬主機與Port-based虛擬主機等。

IP-based虛擬主機 所謂「IP-based虛擬主機」是指使用同一個組態設定檔來管理多個網站(虛擬主機),這是和「獨立伺服器」最大的不同,而所有的虛擬主機雖然位於同一電腦中,但彼此間使用的IP位址都不同。不僅所有虛擬主機可共用組態內容,而且也能共享伺服器的「程序集區」(Process Pool),所以更易於管理,同時也能提供用戶端較快的回應時間。

31.JPG


IP-based虛擬主機
但此架構的缺點是需要較多的IP位址(因為每個虛擬主都使用不同的IP位址)、較多的網路卡,或是將多個IP位址「連結」(Binding)在同一張網路卡上(這就是所謂的IP Alias),所幸目前較新的作業系統,例如Linux,都可支援這些功能。 Name-based虛擬主機 為了解決IP-based虛擬主機消耗過多IP位址的缺點,因此在Apache伺服器中支援「Name-based虛擬主機」的功能,此類型的虛擬主機允許多個網站共用一個IP位址,因此可大大降低對IP位址的需求

但是Name-based虛擬主機的方式只支援使用HTTP/1.1瀏覽器的用戶端,因為它需要利用HTTP/1.1通訊協定中的「Host」表頭功能,以使得Apache伺服器可識別用戶端要求的目標主機,所幸目前只有不到1%的用戶端使用HTTP/1.1之前版本的瀏覽器,因此在支援度的部份應該不成問題。

32.JPG

Name -based虛擬主機


多重網站與安全通訊 3
Name-based虛擬主機的設計原理很簡單,只要在DNS伺服器中,將每個虛擬主機名稱都對應到同一個IP位址,然後再到Apache伺服器上的httpd.conf檔案中,設定所有的Name-based虛擬主機都使用同一個IP位址,如此便完成所有的設定。 由以上的說明可以了解,使用Name-based虛擬主機的方式可以解決建立IP-based虛擬主機時的問題,但是在以下的情形時,建議仍然使用IP-based虛擬主機為宜: 用戶端瀏覽器若是使用較早期的HTTP標準,例如HTTP/1.0,則無法連接Name-based虛擬主機,因為瀏覽器在連接至Name-based虛擬主機時,必須傳送HTTP主機表頭,這就必須使用HTTP/1.1的標準。
Name-based虛擬主機無法使用SSL功能,這是由於SSL通訊協定本身的限制。 有些作業系統及網路設備使用特殊的頻寬管理技術,因而無法在同一個IP位址上區分不同的主機。 Port-based虛擬主機 所謂的Port-based虛擬主機是指,在相同的IP位址或網域名稱上,由不同連接埠所建立的虛擬主機,因此利用此方式可快速的建立多個虛擬主機。以下是一些Port-based虛擬主機的可能範例:
192.168.0.1
192.168.0.1:81
192.168.0.1:800



但通常這種方式的虛擬主機都是屬於私人或實驗性質的用途居多,因為每一個位址可允許使用的連接埠有65536個(0 ~ 65535),而HTTP預設的連接埠為80,所以若是任意變更Apache使用的連接埠號碼,則一般的用戶端並無法成功進行連接(除非得知確定的連接埠號碼)。

33.JPG

若沒有在IP位址或網域名稱後指定連接埠號碼,則表示使用HTTP的預設80連接埠。

Port-based虛擬主機


多重網站與安全通訊
虛擬主機內容選項 其實在設定虛擬主機的組態內容時,可用選項並不多,其中包含的有:DocumentRoot、NameVirtualHost、ServerAlias、ServerName、ServerPath和VirtualHost等。因為有些選項已在先前的小節中介紹過,所以在此我們將說明其他選項的設定方法,以便在下個小節架設虛擬主機之用。
NameVirtualHost 「NameVirtualHost」是設定Name-based虛擬主機的必要選項,因為它可用來指定虛擬主機使用的IP位址,所以不建議在此直接以主機名稱替代IP位址。以下是一個指定虛擬主機IP位址的範例: NameVirtualHost 192.168.0.1
在某些情形下,您可能希望虛擬主機使用特定的連接埠號碼,例如尚在測試中或專供特定人員使用的Web伺服器等,此時也可以使用「NameVirtualHost」選項來支援連接埠的指定。以下是一個指定虛擬主機IP位址及連接埠號碼的範例:
NameVirtualHost 192.168.0.1:8080
在1.3.13版之後的Apache伺服器,允許使用萬用字元「*」來取代個別IP位址的輸入,它表示連接主機上所有的可用IP位址,這可節省逐一輸入的時間。以下是一個使用萬用字元取代IP位址的範例:
NameVirtualHost *


ServerAlias 「ServerAlias」也是設定Name-based虛擬主機的必要選項,但它只適用於1.1版之後的Apache伺服器。此選項可以為虛擬主機新增其他的別名,例如2個同時使用192.168.0.1位址所建立的Name-based虛擬主機,可以分別使用
www.jschouse.comwww.second.com的別名,但需注意一點,除了在此處指定伺服器的別名外,這2個別名也必須於DNS伺服器中登錄(A或CNAME資源記錄)。以下是一個新增虛擬主機別名的範例:

ServerAlias w2.jschouse.com
VirtualHost <VirtualHost>和</VirtualHost>


區塊是用來包含多個在虛擬主機上使用的選項,當伺服器收到用戶端對於特定虛擬主機上的文件要求時,它就會使用包含在
<VirtualHost>和</VirtualHost>之間的組態內容。
以下是使用的語法及說明:
  1. <VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
複製代碼
在語法中的「addr」可以使用以下二種方法來表示: 虛擬主機的IP位址 虛擬主機的主機名稱 以下的範例表示虛擬主機只使用單一IP位址:
  1. <VirtualHost 192.168.0.1>
  2. ServerAdmin webmaster@jschouse.com DocumentRoot /www/docs/jschouse
  3. ServerName www.jschouse.com
  4. ErrorLog logs/jschouse-error_log
  5. </VirtualHost>
複製代碼



多重網站與安全通訊 3
以下的範例表示虛擬主機同時使用多個IP位址:

  1. <VirtualHost 192.168.0.1 192.168.0.2>
  2. DocumentRoot /www/docs/jschouse
  3. ServerName www.jschouse.com
  4. ServerAlias sales
  5. </VirtualHost>
複製代碼
虛擬主機架設 在前幾個小節中,本書介紹許多與虛擬伺服器有關的內容,接下來在這個小節我們將進行虛擬主機的實際架設,本書在此將以3種不同的範例來說明各類虛擬主機的架設方法,這些包括:
IP-based虛擬主機架設 Name-based虛擬主機架設 Port-based虛擬主機架設
因為以下的範例都是使用同一張乙太網路卡,所以為了方便說明起見,我們先在此網路卡上新增其他的IP位址(IP Alias),在新增IP位址時可以使用下面的指令:

  1. [root@ns1 root]# ifconfig eth0:1 192.168.0.121 netmask 255.255.255.0 up
  2. [root@ns1 root]# ifconfig eth0:2 192.168.0.122 netmask 255.255.255.0 up
  3. [root@ns1 root]# ifconfig eth0:3 192.168.0.123 netmask 255.255.255.0 up
複製代碼


在新增並啟用IP Alias後,最好能使用「ping」指令以確定設定內容是否無誤:
  1. [root@ns1 root]# ping -c 2 192.168.0.123
  2. PING 192.168.0.123(192.168.0.123)
  3. from 192.168.0.123:56(84)bytes of data.
  4. 64 bytes from 192.168.0.123:icmp_seq=1 ttl=64 time=0.087 ms 64 bytes from 192.168.0.123:icmp_seq=2 ttl=64 time=0.066 ms
  5. --- 192.168.0.123
  6. ping statistics --- 2 packets transmitted, 2 received, 0% loss, time 1000ms rtt min/avg/max/mdev = 0.066/0.076/0.087/0.013 ms
複製代碼
有關IP Alias的內容請參考「1-4-1 設定網路卡組態-ifconfig指令」小節說明。
IP-based虛擬主機架設 以下本書將以三種不同的範例,來說明架設IP-based虛擬主機時可能出現不同的情況:

範例一
主機上有二個可用IP位址:192.168.0.1和192.168.0.121,它們對應的主機名稱分別為
www.jschouse.com(主要伺服器)與www.virtual.com(虛擬主機)。以下是符合此情況的範例:
[root@ns1 root]# vi /etc/httpd/conf/httpd.conf
  1. DocumentRoot "/var/www/html" ServerName www.jschouse.com <VirtualHost 192.168.0.121>
  2. DocumentRoot "/var/www/virtual" ServerName www.virtual.com </VirtualHost>
複製代碼

多重網站與安全通訊 3
在上例中,使用
www.virtual.com的名稱只能連接到192.168.0.121的虛擬主機,而使用www.jschouse.com來連接,也只能存取主要伺服器(192.168.0.1)上的資源。 若要使用以上二個主機名稱來進行連接,則必須先在DNS伺服器中新增這二個主機名稱的A資源記錄,若是沒有新增此記錄,仍可使用IP位址的方式連接。 範例二
主機上有二個可用IP位址:192.168.0.1和192.168.0.121,它們對應的主機名稱分別為
www.jschouse.comwww.virtual.com,但是沒有指定何者為主要伺服器(非虛擬主機)。以下是符合此情況的範例:
  1. ServerName www.jschouse.com
  2. <VirtualHost 192.168.0.1>
  3. DocumentRoot "/var/www/jschouse"
  4. ServerName www.jschouse.com
  5. </VirtualHost>
  6. <VirtualHost 192.168.0.121>
  7. DocumentRoot "/var/www/virtual"
  8. ServerName www.jschouse.com
  9. </VirtualHost>
複製代碼
在以上的範例中,因為所有的IP位址都被指定為虛擬伺服器所使用,因此並沒有主要伺服器。


範例三 主機上有二個可用IP位址:192.168.0.1和192.168.0.121,它們對應的主機名稱分別為
www.jschouse.com與www-cache.virtual.com,但是沒有指定何者為主要伺服器(非虛擬主機)。前者監聽連接埠80的要求,而www-cache.virtual.com上啟用代理伺服器快取(Proxy Cache)的功能,並且監聽連接埠8080的交通。以下是符合此情況的範例內容:

  1. <VirtualHost 192.168.0.1:80>
  2. DocumentRoot /var/www/jschouse
  3. ServerName www.jschouse.com
  4. </VirtualHost>
  5. <VirtualHost 192.168.0.121:8080>
  6. DocumentRoot /var/www/cache
  7. ServerName www-cache.virtual.com
  8. <Directory proxy:>
  9. Order Deny,Allow
  10. Deny from all
  11. Allow from 192.168.0.0/25
  12. </Directory>
  13. </VirtualHost>
複製代碼
在以上的範例中,所有的IP位址都被指定為虛擬伺服器所使用,因此沒有主要伺服器。用戶端只能使用連接埠80來連接至Web伺服器,而代理伺服器則使用連接埠8080。


多重網站與安全通訊 3

  1. NameVirtualHost 192.168.0.1
  2. <VirtualHost 192.168.0.1>
複製代碼
Name-based虛擬主機架設 假設Apache伺服器的主機名稱為
www.jschouse.com,同時它也擁有二個別名(Aliases)-sales.jschouse.com與backup.jschouse.com,而這些別名都使用同一個IP位址(192.168.0.1)。以下是符合此情況的設定範例:

  1. ServerName www.jschouse.com
  2. DocumentRoot /var/www/sales
  3. ServerName sales.jschouse.com
  4. </VirtualHost>
  5. <VirtualHost 192.168.0.1>
  6. DocumentRoot /var/www/backup
  7. ServerName backup.jschouse.com
  8. </VirtualHost>
複製代碼

在此範例中,雖然三個Web網站使用的IP位址都相同,但是透過Name-based虛擬主機的架設,就可得到不同的網頁內容,其中最重要的部份就在DNS伺服器中的設定。因為我們會在第十一章詳細說明DNS伺服器的使用,所以本書在此僅列出設定的步驟,其方法如下: 建立正解區域,這個部份需要在DNS中的/etc/named.conf檔案新增以下的內容:
zone "jschouse.com" IN { type master; file "jschouse.hosts"; /* 正解區域設定檔「jschouse.hosts」是筆者自訂的區域設定檔,它位於/var/named目錄中。*/
} 自行建立正解區域設定檔-jschouse.hosts(此為筆者自訂的檔案名稱),以下是本書提供的範例:


  1. [root@ns1 root]# vi /var/named/jschouse.hosts
  2. @ IN SOA jschouse.com
  3. dns.jschouse.com(
  4. 2002080201 ; serial
  5. 86400 ; refresh
  6. 3600 ; retry
  7. 3600000 ; expiry
  8. 1D ) ; minimum
  9. @ IN NS jschouse.com
  10. localhost IN A 127.0.0.1
複製代碼
新增資源記錄,以下是本書提供的範例:
  1. www IN A 192.168.0.1
  2. sales IN CNAME www
  3. backup IN CNAME www
複製代碼
重新啟動BIND伺服器,您可使用以下的方法:
[root@ns1 root]# /etc/rc.d/init.d/named restart 停止 named: 確定 ]

 

臉書網友討論
發表於 2013-11-9 00:59:43 | 顯示全部樓層
不錯,感謝版主

版主招募中

發表於 2013-11-9 00:59:43 | 顯示全部樓層
說的不錯  


發表於 2013-11-9 00:59:43 | 顯示全部樓層
努力~~各位。。。  


您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-4 20:08 , Processed in 0.058407 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表