要求對映
Proxy 伺服器使用要求對映,來將接收的 HTTP 要求比對至應用程式(部署在 Cell 中)或遞送規則。
不像 Apache Web 伺服器或 Caching Proxy 具有一般配置檔,並採用指引排序固有的遞送優先順序,Proxy 伺服器卻是採用最相符機制,來決定要求所對應的已安裝應用程式或遞送規則。虛擬主機或 URI 型樣會決定最相符的 Web 模組或遞送規則。對於部署在叢集中的應用程式,Proxy 伺服器會維護其親緣性(Secure Sockets Layer ID、Cookie 和 URL 重新編寫),否則,會使用加權循環方法,來選取目標伺服器。在假設遞送規則和應用程式部署在相同 Cell 中的情況下,下列範例說明各種不同的遞送實務。
- Proxy 環境
稱為 proxy1 的 WebSphere® Proxy 伺服器處於作用中,並且與應用程式和遞送規則位於相同的 Cell 中。在 Cell 中已針對 proxy1 啟用所有的應用程式和遞送規則,且 proxy1 的 PROXY_HTTP_ADDRESS 設為 80。
虛擬主機 主機名稱 埠 default_host host1.company.com 80 host1.company.com 9080 * 80 proxy_host host2.company.com 80 * 443 * 80 server_host host3.company.com 80 URI 群組名稱 URI 型樣 ALL /* ROOMS /kitchen/*、/bathroom/* 和 /bedroom/* CONFLICT /WM2C/* 通用伺服器叢集名稱 通訊協定 主機 埠 CLUSTER1 HTTP webserver1.company.com 9081 webserver2.company.com 9083 CLUSTER2 HTTP host47.company.com 8088 host48.company.com 8088 CLUSTER2-SSL HTTPS host47.company.com 8443 host48.company.com 8443 遞送規則名稱 虛擬主機 URI 群組 動作 ALLTOCLUSTER1 proxy_host ALL 通用伺服器叢集 - CLUSTER1 ROOMTOCLUSTER2 proxy_host ROOMS 通用伺服器叢集 - CLUSTER2 ALLTOCLUSTER2 server_host ALL 通用伺服器叢集 - CLUSTER2 REDIRECTTOCONFLICT default_host CONFLICT 重新導向 - http://www.conflict.com 應用程式名稱 環境定義根目錄 Web 模組名稱 虛擬主機 Web 模組 URI 型樣 App1 /WM1A/ Web Mod A default_host wm1a.jsp /WM1B/ Web Mod B default_host wm1b.jsp App2 /WM2C/ Web Mod C default_host /*、wm2c.jsp /WM2D/ Web Mod D default_host /*、wm2d.jsp - 範例 1:基本要求
- proxy1 Proxy 收到下列要求:
GET /WM1A/wm1a.jsp HTTP/1.1 Host: host1.company.com
結果是傳送 wm1a.jsp 檔作為回應。ALLTOCLUSTER1 遞送規則是可能的相符項,但是 proxy1 卻將 Web Mod A 選為最相符項,這是因為相較於 /*,其環境定義根目錄和 URI 型樣 /WM1A/wm1a.jsp 的組合更為相符。將 Web Mod A 選為最相符項的另一個原因是,其虛擬主機包含 host1.company.com:80 別名,這比 *:80 萬用字元別名,更加具體符合。
- 範例 2:使用相同 URI 群組和不同虛擬主機的遞送規則
- proxy1 Proxy 收到下列要求:
GET /index.html HTTP/1.1 Host: host3.company.com
結果是 proxy1 Proxy 將要求對映至 ALLTOCLUSTER2 遞送規則,並收到 CLUSTER2 中之伺服器的回應。ALLTOCLUSTER1 遞送規則是可能的相符項,且一旦 ALLTOCLUSTER2 遞送規則不存在,它還能處理要求。不過,ALLTOCLUSTER2 規則是最相符項,這是因為其虛擬主機 (server_host) 明確列出了 host3.company.com。
- 範例 3:使用相同虛擬主機和不同 URI 群組的遞送規則
- proxy1 Proxy 收到下列要求:
GET /kitchen/sink.gif HTTP/1.1 Host: host2.company.com
結果是 proxy1 Proxy 將要求對映至 ROOMSTOCLUSTER2 遞送規則,且 CLUSTER2 叢集中的伺服器傳送了一則回應。ALLTOCLUSTER1 遞送規則是可能的相符項,但是 ROOMSTOCLUSTER2 規則是最相符項,這是因為其 URI 群組包含 /kitchen/* 型樣,因此更加符合要求 URI /kitchen/sink.gif。
- 範例 4:遞送規則 URI 群組與使用相同虛擬主機之 Web 模組的 URI 型樣相衝突
- proxy1 Proxy 收到下列要求:
GET /WM2C/index.html HTTP/1.1 Host: host1.company.com
結果不明確。到底是由 Web Mod C 還是 REDIRECTTOCONFLICT 遞送規則來處理要求,並不明確,這是因為它們使用相同的虛擬主機,且都具有相同的 URI 型樣。在這類情況下,proxy1 Proxy 的 SystemOut.log 檔中會顯示 ID DWCT0007E 訊息。在本例中,將 REDIRECTTOCONFLICT 遞送規則變更為使用不同的虛擬主機,即可解決問題。
註: 這個主題參照一或多個應用程式伺服器日誌檔。 此外,在分散式和 IBM® i 系統上,另外也建議您可以配置伺服器來使用「高效能可延伸記載 (HPEL)」日誌和追蹤基礎架構,而不使用 SystemOut.log、SystemErr.log, trace.log 及 activity.log 檔案。HPEL 與原生 z/OS® 記載機能也可以一起使用。如果您使用 HPEL,則可以從伺服器設定檔 bin 目錄,利用 LogViewer 指令行工具來存取您所有的日誌和追蹤資訊。請參閱有關利用 HPEL 疑難排解應用程式的資訊,以取得更多使用 HPEL 的相關資訊。 - 範例 5:PROXY_HTTP_ADDRESS 位址不在虛擬主機中
- 假設將 proxy1 Proxy 位址 PROXY_HTTP_ADDRESS 變更為 81,而其他所有的配置資訊則維持相同。proxy1 Proxy 收到下列要求:
GET /index.html HTTP/1.1 Host: host1.company.com:81
結果是 proxy1 Proxy 無法處理要求,這是因為虛擬主機中沒有可用的 PROXY_HTTP_ADDRESS 位址,並且會將 HTTP 404 回應傳回給用戶端。