Sun WebServer 1.0 的配置檔案 /etc/http/httpd.conf 內含有設定伺服器、各虛擬主機以及通訊埠的所有基本指引設定,其中三個主要的區塊類型分別為 server{}
區塊、url{}
區塊以及 port{}
區塊,將於本小節中詳加探討。
server{}
區塊 將 Sun WebServer 1.0 的 server{}
區塊轉換成 Sun WebServer 2.0 的格式相當簡單,因為 1.0 區塊內的大部份指引與 2.0 的完全相同,除了以下幾個之外:
acl_delegate_depth
Sun WebServer 已經不再支援 acl_delegate_depth
指引以及存取權控制代理的觀念,詳細說明請參閱本文件中「轉移 Sun WebServer 1.0 access.acl 檔案」之說明。
acl_enable
acl_enable
指引已經改成 access_enable
。
acl_enable
指引 在 /etc/http/httpd.conf 內搜尋下列 Sun WebServer 1.0 指引:
acl_enable yes |
將 /etc/http/server1.httpd.conf 中的這個指令換成以下指引:
access_enable yes |
acl_file
server{}
區塊內已經不再支援 acl_file
指引了,因為伺服器層級的存取權控制檔案已經換成: /etc/http/access.conf。此檔案的名稱不可更改。
對應
server{}
區塊內已經不再支援 map
指引。所有 URL 對應都必須在網站的 map.conf 檔案中加以設定。
mime_add
Sun WebServer 2.0 已經不再支援 mime_add
指引。所有 mime 類型都必須在伺服器或網站的 mime.types 檔案中加以指定。
mime_add
指令 假設要轉換以下的 Sun WebServer 1.0 指令:
server { mime_add "image/.jpeg" "JPG" } |
請確定 /etc/http/server1.httpd.conf 內已設定了 mime.types 檔案:
若此檔案是讓所有伺服器共同使用,則修改此檔案會影響所有執行中的 httpd 程式
server { mime_file "/etc/http/mime.types } |
在 /etc/http/mime.types 檔案內加入新的 MIME 對應:
image/jpeg JPG |
server{}
區塊轉換 假設要轉換以下的 Sun WebServer 1.0 在 /etc/http/httpd.conf 內的 server{}
區塊:
server { server_root "/var/http/demo/" server_user "root" mime_add "image/jpeg" "JPG" mime_default_type text/html acl_enable "yes" acl_file "/etc/http/access.acl" acl_delegate_depth 3 map /cgi-bin/ /var/http/cgi-bin/ cgi } |
修改 /etc/http/server1.httpd.conf 內的 server{}
區塊:
server { server_root "/var/http/demo/" server_user "http" mime_file "/etc/http/mime.types" mime_default_type text/html access_enable "yes" } |
將 MIME 對應加入已設定於 (2) 的 /etc/http/mime.types 檔案內:
image/jpeg JPG |
url{}
區塊在 Sun WebServer 1.0 中,虛擬主機的所有配置參數都集中放在 /etc/http/httpd.conf 檔案內的同一個地方,但在 Sun WebServer 2.0 中,只有虛擬主機的整體資訊才放在伺服器層級的配置檔案中,而各虛擬主機自己的特殊資訊則放在站台層級的配置檔案內。
url{}
區塊轉換成 2.0在目前的伺服器 (server1) 上增加一個站台 (widgets):
# hthost add -i server1 -h widgets \ -s /var/http/server1/websites/widgets |
以上指令會在伺服器層級配置檔案 /etc/http/server1.httpd.conf 內加入以下設定:
url //widgets { site_enable "yes" site_path "/var/http/server1/websites/widgets" site_config "conf/widgets.site.conf" } |
此外還會在 /var/http/server1/websites/widgets/ 內建立一個新的站台,而 /var/http/server1/websites/widgets/conf/ 目錄內則會出現以下配置檔案:
widgets.site.conf
access.conf
realms.conf
map.conf
content.conf
servlets.properties
Sun WebServer 1.0 url{}
區塊內的大部份配置參數都可以放在站台層級配置檔案 widgets.site.conf 中,其中一個例外則是設定虛擬主機接聽用的通訊埠。每個虛擬主機均需設定其接收連線的 IP 位址與通訊埠。(此處與 1.0 不同,1.0 版的作法是將這些資訊放在 port{}
區塊內,並使用 hosts_supported
指令。)IP 位址與通訊埠合起來在 Sun WebServer 2.0 內稱為「連線端點」,所有網站都必須設定其連線端點(內定站台例外,因為內定站台會在所有的介面上接聽,因此不可
設定連線端點)。有關連線端點的詳細資訊,請參閱 httpd.conf (4)。
若要讓虛擬主機 widgets 在 IP 位址 129.128.127.126 的通訊埠 80 以及所有 IP 位址的通訊埠 1880 上接收連線,請在 /etc/http/server1.httpd.conf 內加上以下設定:
url //widgets { site_enable "yes" site_path "/var/http/server1/websites/widgets" site_config "conf/widgets.site.conf" conn_end_points 129.128.127.126:80:1880 } |
IP 位址不設定在冒號 (:) 左邊,係內定於 HTTP 1.1 虛擬主機中的「所有 IP 位址」。請注意此處設定的所有連線端點都必須用 port{}
區塊加以對應。
Sun WebServer 1.0 url{}
區塊的大部份配置指令都可以直接複製到 Sun WebServer 2.0 站台層級配置 /var/http/server1/websites/widgets/conf/widgets.site.conf 內繼續使用,但以下情形例外:
Sun WebServer 2.0 的所有 URL 對應設定都存放在另外一個檔案 map.conf 內。
假設 Sun WebServer 1.0 的 /etc/http/httpd.conf 檔案內有以下設定:
url //widgets { map /cgi-bin/ /var/http/shared/cgi-bin/ cgi } |
請在 widgets 站台的 /var/http/server1/websites/widgets/conf/map.conf 檔案內加入以下這一行:
map /cgi-bin/ /var/http/shared/cgi-bin/ cgi |
mime_add
mime_add
指令 假設 Sun WebServer 1.0 的 /etc/http/httpd.conf 內含有以下設定:
url //widgets { mime_add "image/jpeg" "JPG" } |
將 /var/http/server1/websites/widgets/conf/widgets.site.conf 內的 mime_file
指令註解去掉:
url //widgets { mime_file "conf/mime.types" } |
將以下新的 mime 對應設定加入 /var/http/server1/websites/widgets/conf/mime.types 檔案內:
image/jpeg JPG |
port{}
區塊Sun WebServer 2.0 內的 port{}
區塊有兩個主要的改變: 由於主機接聽用的通訊埠已經改成用 url{}
區塊內的 conn_end_points
指令加以設定,因此 hosts_supported
指令已經不能使用了,而且所有通訊埠都必須設定 ip_address
。0.0.0.0 這個特殊的 IP 位址表示「此電腦上所有正確的 IP 位址。
port{}
區塊 假設以下 Sun WebServer 1.0 port{}
區塊:
port 80 { ip_address 129.128.127.126 keepalive_enable "yes" request_timeout 180 hosts_supported widgets } |
修改 /etc/http/server1.httpd.conf內的 widgets url{}
區塊,將 conn_end_points
設定改正:
url //widgets { site_enable "yes" site_path "/var/http/server1/websites/widgets" site_config "conf/widgets.site.conf" conn_end_points 129.128.127.126:80 } |
將 port{}
區塊加入 /etc/http/server1.httpd.conf 內(不要有 hosts_supported
指令):
port 80 { ip_address 129.128.127.126 keepalive_enable "yes" request_timeout 180 } |
port{}
區塊假設以下的 Sun WebServer 1.0 port{}
區塊範例:
port 1880 { keepalive_enable "yes" request_timeout 180 hosts_supported widgets } |
修改 /etc/http/server1.httpd.conf 內的 widgets url{}
區塊,將 conn_end_points
改正:
url //widgets { site_enable "yes" site_path "/var/http/server1/websites/widgets" site_config "conf/widgets.site.conf" conn_end_points :1880 } |
在 /etc/http/server1.httpd.conf 的 port{}
區段內加上含 0.0.0.0 值的 ip_address
指令:
port 1880 { ip_address 0.0.0.0 keepalive_enable "yes" request_timeout 180 } |