plugin-cfg.xml 檔

plugin-cfg.xml 檔包含配置資訊來決定 Web 伺服器外掛程式如何轉遞要求。

WebSphere Application Server 傳統版

您可以建立兩個類型的 plugin-cfg.xml 檔:application-centrictopology-centric

已淘汰的特性 已淘汰的特性: 以拓蹼為主(也稱為廣域)的配置已淘汰。 請在配置新的 Web 伺服器外掛程式時,使用以應用程式為主的配置;請考慮將現有以拓蹼為主的配置重新配置成改用以應用程式為主的配置。 如需相關資訊,請參閱實作 Web 伺服器外掛程式depfeat

以應用程式為主的配置檔會有一個應用程式同時對映至 Web 伺服器和應用程式伺服器定義。 您利用管理主控台對外掛程式所做的變更會在產生時持續保存到 plugin-cfg.xml 檔。 以應用程式為主的配置更加靈活,能夠支援 Intelligent Management 之類的動態功能。

以拓蹼為主的檔案代表環境中定義的一切事項。 一般而言,您沒有定義 Web 伺服器時會使用這個 plugin-cfg.xml 檔。

當您想要更新以拓蹼為主的 plugin-cfg.xml 檔,請考量下列規則:
  • 如果 plugin-cfg.xml 檔存在於 app_server_root\dmgr\cells 目錄內,外掛程式產生程序會忽略來自管理主控台的應用程式伺服器 > Web 伺服器外掛程式內容畫面中更新的值,而是使用 XML 檔內現有的值。 在此情況下,您必須手動更新 XML 檔,以持續保存那些值。
  • 如果 plugin-cfg.xml 檔不存在於 app_server_root\dmgr\cells 目錄內,外掛程式產生程序會建立 plugin-cfg.xml 檔。 此程序會持續保存管理主控台內的應用程式伺服器 > Web 伺服器外掛程式內容畫面上設定的最新值。
許多 Web 伺服器外掛程式內容,例如 RefreshIntervalLogLevel 和 Edge Side Include (ESI) 處理器內容,只能以手動方式更新。 每一次反覆運算都必須維護那些值。
避免困難 避免困難: 請利用管理主控台來設定每一個 Web 伺服器定義的這些內容。您對每一個 Web 伺服器的外掛程式配置檔所做的手動變更,在每次重新產生檔案時就會被置換。gotcha
避免困難 避免困難: 以拓蹼為中心(或廣域)的外掛程式配置已淘汰。請依照實作 Web 伺服器外掛程式中的說明,改用以應用程式為中心的配置。對於任何現有以拓蹼為中心的配置,您可以使用管理主控台,或針對 Cell 中的所有叢集,執行 GenPluginCfg 指令,來更新廣域 plugin-cfg.xml 檔。不過,在更新廣域 plugin-cfg.xml 檔之前,您必須先刪除 config/cells/plugin-cfg.xml 檔。如果您沒有刪除 config/cells/plugin-cfg.xml 檔,就只會將新的內容及其值新增到廣域 plugin-cfg.xml 檔中。任何現有外掛程式內容值的更新,都不會新增到廣域 plugin-cfg.xml 檔中。gotcha
註: 由於 GenPluginCfg 指令是在其本身的 Java™ 虛擬機器 (JVM) 內執行,而非 WebSphere® Application Server JVM,指令可能無法存取其他的類別檔。如果您在執行 GenPluginCfg 指令時遇到這個問題,您可以改為執行 httpPluginManagement.py Script 來產生以應用程式為中心的外掛程式配置。此 Script 使用 wsadmin 來起始產生外掛程式。如需相關資訊,請參閱httpPluginManagement.py Script

Liberty

您可以從伺服器所用的相同 Java SDK 內呼叫 WebSphere:name=com.ibm.ws.jmx.mbeans.generatePluginConfig MBean,以產生 Liberty 伺服器的 plugin-cfg.xml 檔。

Config

此必要元素是 HTTP 外掛程式配置檔的開頭。

IgnoreDNSFailures

指定外掛程式在啟動時是否要忽略配置內的 DNS 失敗。 當設定為 true 時,外掛程式會忽略配置內的 DNS 失敗,且如果每個伺服器叢集至少有一個伺服器能夠解析主機名稱,外掛程式會順利啟動。 主機名稱無法解析的任何伺服器在整個配置存在期間會標示為無法使用。在遞送要求期間不會試圖解析主機名稱。 如果發生 DNS 失敗,日誌訊息會寫入外掛程式日誌檔,而且外掛程式會繼續起始設定,不會造成 Web 伺服器無法啟動。 預設值為 false,表示 DNS 失敗會造成 Web 伺服器無法啟動。

RefreshInterval

指定外掛程式檢查配置檔是否已更新或變更的時間間隔(秒)。 外掛程式會檢查這個檔案自從上次載入外掛程式配置之後是否有任何修改。

在變更頻繁的開發環境中,低於預設值 60 的設定較理想。在正式作業中,由於配置不會太經常更新,高於預設值較適合。 若外掛程式重新載入因故失敗,訊息會寫入外掛程式日誌檔,而且會使用前一個配置,直到順利重新載入外掛程式配置檔為止。 如果沒有看到您對外掛程式配置所做的變更,請檢查外掛程式日誌檔,以了解問題的端倪。
註: 此外,在 Microsoft、UNIX 和 Linux 平台上,您可以在 plugin-cfg.xml 中將 RefreshInterval 設為 -1,來停用自動重新載入。

ASDisableNagle

指定使用者是否要對外掛程式和應用程式伺服器之間的連線停用 Nagle 演算法。 依預設會啟用 Nagle 演算法。

值可以是 truefalse

[Windows]

IISDisableNagle

指定使用者是否要在 Microsoft Internet Information Services (IIS) 上停用 nagle 演算法。依預設會啟用 Nagle 演算法。

值可以是 truefalse

VHostMatchingCompat

指定是否使用埠號來比對虛擬主機。請指定下列其中一個值:
  • true 表示使用收到要求的埠號進行實際比對。
  • false 表示使用主機標頭包含的埠號進行邏輯比對。

預設值為 false

AppServerPortPreference

指定應用程式伺服器使用哪一個埠號來為 sendRedirect() 方法建置 URI。可以指定下列值:
  • hostHeader,表示使用送入的 HTTP 要求之主機標頭中的埠號。
  • webserverPort,表示使用 Web 伺服器收到要求的埠號。

預設值為 hostHeader

ResponseChunkSize

指定讀取回應主體時要使用的區塊大小上限。 例如,指定 Config ResponseChunkSize="N">,其中 N 等於片段大小 (KB)。

外掛程式會以 64 K 區塊為單位讀取回應主體,直到所有回應資料讀取完畢。 如果要求的回應主體包含大量資料,這種方式會造成效能問題。

如果回應主體的內容長度不明,則會配置 N KB 的緩衝區大小並以 N KB 大小區塊為單位讀取主體,直到整個主體讀取完畢。 如果已知內容長度,則會使用內容長度或 N 的緩衝區大小(以較小的值為準)來讀取回應主體。

預設區塊大小是 64 K。

AcceptAllContent

指定當要求標頭包含 Content-Length 或 Transfer-encoding 標頭時,使用者是否可以在 POST、PUT、GET 及 HEAD 要求中加入內容。 您可以對這個屬性指定下列其中一個值:
  • True 表示需要並讀取所有要求的內容
  • False 表示只需要和讀取 POST 和 PUT 要求的內容。

預設值為 True

ChunkedResponse

指定當回應中有 Transfer-Encoding: Chunked 標頭時,外掛程式是否必須使用區塊來將傳給用戶端的回應區塊化。

此屬性只適用於 IIS、Oracle iPlanet 及 Lotus® Domino® Web 伺服器。IBM® HTTP Server 會針對傳給用戶端的回應,自動處理其分段。

您可以對這個屬性指定下列其中一個值:

  • true 表示當回應中有 Transfer-Encoding: Chunked 標頭時,外掛程式要將傳給用戶端的回應區塊化。
  • false 表示不要將回應區塊化。

預設值為 false

ESIEnableToPassCookies

表示處理 ESI include 要求時是否容許階段作業將 Cookie 轉遞至 WebSphere Application Server。 如果此值設為 true,則會啟用這個自訂內容。如果此值設為 false,則會停用這個自訂內容。依預設,此值設定為 false

GetDWLMTable

指定在新建立的外掛程式程序處理任何 HTTP 要求之前,是否容許它先主動向 WebSphere Application Server 要求分割區表格。 只有在已配置記憶體至記憶體階段作業管理時,才使用這個自訂內容。如果此值設為 true,則會啟用這個自訂內容。如果此值設為 false,則會停用這個自訂內容。依預設,此值設定為 false

[IBM i]

OS400ConvertQueryStringToJobCCSID

指定要將 HTTP 要求的查詢字串轉換成 IBM HTTP Server 工作的字碼頁,還是轉換成「EBCDIC 字碼頁 37」,以供內部處理。預設值為 false,表示將查詢字串轉換為 EBCDIC 字碼頁 37。

TrustedProxyEnable

允許 Web 伺服器外掛程式與 TrustedProxyList 自訂內容列出的 Proxy 伺服器和負載平衡器連接。當這個內容設為 true 時,這份授信 Proxy 清單中的 Proxy 伺服器和負載平衡器可以設定 $WSRA 和 $WSRH 內部標頭的值。$WSRA 內部標頭是遠端主機(通常是瀏覽器)的 IP 位址,或經由網址轉換 (NAT) 取得的內部位址。$WSRH 內部標頭是遠端主機的主機名稱。此標頭資訊可讓 Web 伺服器外掛程式與該特定的 Proxy 伺服器或負載平衡器連接。

當您使用這個自訂內容時,還必須使用 TrustedProxyList 自訂內容,來指定授信 Proxy 伺服器和負載平衡器清單。此外,您必須在管理主控台的「要求遞送」畫面中,清除「移除特殊標頭」勾選框。如需相關資訊,請參閱 Web 伺服器外掛程式要求遞送內容的相關說明文件。

TrustedProxyList

以逗點區隔清單指定有權與此 Web 伺服器外掛程式連接的所有 Proxy 伺服器或負載平衡器。這個內容必須與 TrustedProxyEnable=true 自訂內容設定搭配使用。如果 TrustedProxyEnable 自訂內容設為 false,會忽略這份清單。

SSLConsolidate

指定 Web 伺服器外掛程式是否要將每一項新 SSL 傳輸的設定,與已定義在配置檔中的其他 SSL 傳輸的設定相互比較。當您將這個內容設為 true,且外掛程式判斷指定給新 SSL 傳輸的金鑰環和 CertLabel 值,符合指定給已定義之 SSL 傳輸的值,則外掛程式會使用現有的 SSL 環境,而不建立新的 SSL 環境。建立較少的 SSL 環境,表示外掛程式需要的記憶體較少,且外掛程式的起始設定時間縮短,因而可使您的整體 GSkit 環境達到最佳化。

[AIX Solaris HP-UX Linux Windows]

SSLPKCSDriver

指定與選用 SSL 輔助處理器連接的可載入模組的完整名稱。完整名稱必須包含目錄路徑和模組名稱。

[AIX Solaris HP-UX Linux Windows]

SSLPKCSPassword

針對與 SSLPKCSDriver 自訂內容指定的模組連接的 SSL 輔助處理器指定密碼。

如果您使用 IBM HTTP Server,您可以使用 sslstash 程式,來建立內含這個密碼的檔案。在此情況下,您可以指定該檔案的完整名稱來作為這個自訂內容的值,而不是指定實際密碼。

日誌

說明外掛程式寫入的日誌訊息的位置及層次。如果配置檔內未指定 log 元素,則在某些情況下,日誌訊息會寫入 Web 伺服器錯誤日誌中。

例如,您可以指定下列程式碼行:

[AIX Solaris HP-UX Linux Windows][IBM i]
<Log LogLevel="Error" Name="/opt/WebSphere/AppServer60/logs/http_plugin.log"/>
[z/OS]
<Log LogLevel="Error" Name="/log_directory/file_name"/>
  • Name

    指定供外掛程式寫入錯誤訊息的日誌檔的完整路徑。針對每一個日誌,只能指定一個屬性。

    [AIX Solaris HP-UX Linux Windows][IBM i]如果檔案不存在,則會建立檔案。如果檔案存在,則會以附加模式開啟檔案,先前的外掛程式日誌訊息仍然存在。

    適用於轉換使用者 適用於轉換使用者: 從第 7 版起,您為外掛程式日誌檔所指定的名稱不會附加日期與時間戳記,以及處理程序 ID。 因此會建立單一 Web 伺服器外掛程式日誌檔,而不會建立以日期來區別的多個日誌檔。trns
  • LogLevel

    指定外掛程式寫入日誌中的日誌訊息的詳細程度。請針對每一個日誌指定下列其中一個值,或不指定。

    記載層次值 記載層次說明
    Trace 詳細記載要求程序中的所有步驟。
    Stats 記載針對每個要求所選取的伺服器及關於要求處理的其他負載平衡資訊。
    Warn 記載因為異常要求處理而產生的所有警告和錯誤訊息
    Error 只記載因為異常要求處理而產生的錯誤訊息
    Debug 記載處理要求時所執行的所有重要步驟。
    Detail 記錄要求和回應的所有相關資訊。

    如果 Log 元素沒有指定 LogLevel 值,則會使用預設值 Error。

    [AIX Solaris HP-UX Linux Windows][IBM i]
    避免困難 避免困難: 將層次設為 Trace 時,請務必小心。這個層次上會記載多個訊息,很快耗盡磁碟空間。 Trace 設定會對效能會造成負面影響,請不要在正常運作環境中使用。gotcha
    [z/OS]
    避免困難 避免困難: 將層次設為 Trace 時,請務必小心。這個層次上會記載多個訊息,很快耗盡檔案系統。 Trace 設定會對效能會造成負面影響,請不要在正常運作環境中使用。gotcha

Property Name="esiEnable" Value="true/false"

啟用或停用 Edge Side Include (ESI) 處理器。如果停用 ESI 處理器,則會忽略此檔案中的其他 ESI 元素。

您可以將 Value 設為 truefalse。 依預設,將 ESI 處理器的值設為 false 即可停用它。

Property Name="esiMaxCacheSize" Value="integer"

指定快取的大小上限(以 1 KB 為單位)。快取的預設大小上限為 1024 KB (1 MB)。如果快取已滿,則第一個從快取刪除的項目是最接近其有效期限的項目。

Property Name="ESIInvalidationMonitor" Value="true/false"

指定 ESI 處理器是否從應用程式伺服器接收失效。

您可以將 Value 設為 truefalse。 依預設,這個內容會設為 false

Property Name="FIPSEnable" Value="true/false"

指定是否啟用美國聯邦資訊處理標準 (FIPS),以建立對應用程式伺服器的 Secure Socket Layer (SSL) 連線。如果應用程式伺服器上已啟用 FIPS,請將這個內容設為 true

您可以將 Value 值設為 truefalse。 依預設,這個內容會設為 false

Property Name="PluginInstallRoot" Value="C:\IBM\WebSphere\Plugins"

指定外掛程式的安裝路徑。如果使用 Global Security Kit (GSKit),則這是必要的內容,因為 WebSphere Application Server 支援本端安裝的 GSKit,而不是廣域安裝。屬性值設為外掛程式安裝根目錄的完整路徑。

傳輸可辨識的支援名稱為 keyring、stashfile 和 password。依預設,這個內容會設為 none

ServerCluster

指定一組通常配置來處理相同類型之要求的伺服器。 請針對每一個配置指定一或多個叢集。

在最簡單的情況下,叢集只包含一個伺服器定義。在定義多個伺服器的情況下,外掛程式會使用循環式或隨機演算法,在已定義的伺服器之間達到負載平衡。預設演算法是「循環式」。

下列程式碼是 ServerCluster 元素的範例。

[AIX Solaris HP-UX Linux Windows][IBM i]
<ServerCluster Name="Servers">
<ClusterAddress Name="ClusterAddr">
<Transport Hostname="192.168.1.2" Port="9080" Protocol="HTTP"/>
<Transport Hostname="192.168.1.2" Port="9443" Protocol="HTTPS">
<Property Name="Keyring" value="c:/WebSphere/AppServer/keys/keyring.kdb"/>
<Property Name="Stashfile" value="c:/WebSphere/AppServer/keys/keyring.sth"/>
</Transport>
</ClusterAddress>
<Server Name="Server1">
<Transport Hostname="192.168.1.3" Port="9080" Protocol="HTTP"/>
<Transport Hostname="192.168.1.3" Port="9443" Protocol="HTTPS">
<Property Name="Keyring" value="c:/WebSphere/AppServer/keys/keyring.kdb"/>
<Property Name="Stashfile" value="c:/WebSphere/AppServer/keys/keyring.sth"/>
</Transport>
</Server>
<Server Name=Server2>
<Transport Hostname="192.168.1.4" Port="9080" Protocol="HTTP"/>
<Transport Hostname="192.168.1.4" Port="9443" Protocol="HTTPS">
<Property Name="Keyring" value="c:/WebSphere/AppServer/keys/keyring.kdb"/>
<Property Name="Stashfile" value="c:/WebSphere/AppServer/keys/keyring.sth"/>
</Transport>
</Server>
<Server Name="Server3">
<Transport Hostname="192.168.1.5" Port="9080" Protocol="HTTP"/>
<Transport Hostname="192.168.1.5" Port="9443" Protocol="HTTPS">
<Property Name="Keyring" value="c:/WebSphere/AppServer/keys/keyring.kdb"/>
<Property Name="Stashfile" value="c:/WebSphere/AppServer/keys/keyring.sth"/>
</Transport>
</Server>
<PrimaryServers>
<Server Name="Server1"/>
<Server Name="Server2"/>
</PrimaryServers>
<BackupServers>
<Server Name="Server3"/>
</BackupServers>
</ServerCluster>
[z/OS]
<ServerCluster CloneSeparatorChange="false"
        LoadBalance="Round Robin" Name="Cluster1"
        PostSizeLimit="10000000" RemoveSpecialHeaders="true" 
        RetryInterval="60">
<Server
CloneID="BA36BEC1EB243D8B000000E4000000030926301B"
            ConnectTimeout="0" ExtendedHandshake="false"
            LoadBalanceWeight="2" MaxConnections="0"
            Name="SY1_ClusterMember1" WaitForContinue="false">
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="9084" Protocol="http"/>
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="0" Protocol="https">
<Property Name="Keyring" value="safkeyring:///mzjring1/"/>
<Property Name="Stashfile" value=""""/>
<Property Name="certLabel" Value="selfsigned"/>
</Transport>
</Server>
<Server CloneID="BA36BED017FDF40E000000E4000000030926301B"
            ConnectTimeout="0" ExtendedHandshake="false"
            LoadBalanceWeight="2" MaxConnections="0"
            Name="SY1_ClusterMember2" WaitForContinue="false">
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="9085" Protocol="http"/>
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="0" Protocol="https">
<Property Name="Keyring" value="safkeyring:///mzjring1/">
<Property Name="Stashfile" value=""""/>
<Property Name="certLabel" Value="selfsigned"/>
</Transport>
</Server>
<PrimaryServers>
<Server Name="SY1_ClusterMember1"/>
<Server Name="SY1_ClusterMember2"/>
</PrimaryServers>
</ServerCluster>
適用於轉換使用者 適用於轉換使用者: IBM HTTP Server for z/OS® 5.3 版的 Web 伺服器外掛程式使用的 SSL 介面,與此外掛程式第 7 版之前所用的 SSL 介面不同。IBM HTTP Serve for z/OS 5.3 版的外掛程式與應用程式伺服器之間的 SSL 連線的現行運作方式,與採用 Apache 技術之 IBM HTTP Server 和應用程式伺服器之間的 SSL 連線相同。plugin-cfg.xml 檔中指定給金鑰環和隱藏檔的值不再被忽略,且不受 IBM HTTP Server for z/OS 5.3 版中所設定之 SSL 環境影響。trns

z/OS PTF UK35083 套件含有 z/OS HTTP Server 5.3 版 SSL 介面變更,該變更對應至這項 Web 伺服器外掛程式變更。因此,您必須將此 PTF 套用至系統,新的 Web 伺服器外掛程式 SSL 介面才能適當地運作。

在 IBM HTTP Server for z/OS 5.3 版的 httpd.conf 檔中,也必須包含 SSLMODE=MULTI 選項。7.0 版或更新的版本不支援 SSLMODE=ON 選項。

如果 httpd.conf 檔中未指定 SSLMode multi 選項,或如果您沒有將 z/OS PTF UK35083 套件套用至您的系統,您可能會收到錯誤訊息 IMW0584W。此訊息指出針對 HTTP 伺服器指定的 SSL 模式,與針對 IBM HTTP Server for z/OS 5.3 版使用的 Web 伺服器外掛程式所指定的 SSL 模式不相容。在上述任一種狀況下都可能發生無法預期的結果。

對於 IBM HTTP Server for z/OS 5.3 版和 z/OS 上的 IBM HTTP Server(採用 Apache 技術)兩者的 Web 伺服器外掛程式:
  • 如果您使用階層式檔案系統 (HFS) 中的 kdb 檔與隱藏檔,請同時指定 Property Name=keyringProperty Name=stashfile 元素,如前述範例所示。
    避免困難 避免困難: 您為這些元素指定的值與您在舊版產品中指定的值,格式不同。gotcha
  • 如果您使用系統授權機能 (SAF) 金鑰環,而不是 kdb 檔,您必須從管理主控台建立下列兩個自訂外掛程式內容:
    KeyringLocation
    指定 SAF 金鑰環的目錄位置作為此內容的值。當您儲存此配置變更時,這個目錄位置會變成 plugin-cfg.xml 檔中的 keyring 內容的值。
    StashfileLocation
    指定 """"(空值)作為此內容的值。當您儲存此配置變更時,""""(空值)會變成 plugin-cfg.xml 檔中的 stashfile 內容的值

    請參閱Web 伺服器外掛程式配置內容,以取得如何從管理主控台建立 KeyringLocationStashfileLocation 的指示。

    請參考下列範例來指定 SAF 金鑰環:
    <Transport Hostname="appserver.example.com" Port="9443" Protocol="https">
    <Property name="keyring" value="safkeyring:///SAF_keyring_name"/>
    <Property Name="stashfile" value=""""/>
    </Transport>
  • Name

    指定要用於此伺服器群組的邏輯或管理名稱。請針對每一個 ServerCluster 指定一個屬性。

  • LoadBalance

    這個屬性可以指定下列值:

    循環式

    隨機

    「循環式」實作有一個隨機起點。第一個應用程式伺服器是隨機挑選。從該點之後就使用「循環式」來挑選應用程式伺服器。 此實作可確保在多程序型 Web 伺服器中,所有程序不是以傳送第一個要求給相同的應用程式伺服器而啟動。

    「隨機」實作也有一個隨機起點。但在此實作中,也是隨機選取所有後續的伺服器。 因此,可能會重複選取相同的伺服器,而其他伺服器仍然閒置。

    預設的平衡負載類型是「循環式」。

  • IgnoreAffinityRequests

    指定根據「循環式」演算法選取伺服器時,外掛程式是否忽略對伺服器提出的親緣性要求數目。請針對每一個 ServerCluster 指定一個屬性或不指定。此值是 truefalse。如果值設為 false,則在選取伺服器的過程中也會考量提出的親緣性要求數目。

    預設值 false,這表示「循環式」演算法中會使用提出的親緣性提出數目。

    適用於轉換使用者 適用於轉換使用者: 如果要轉移使用者:這是從舊版產品的變更。 舊版 WebSphere Application Server 中的預設值為 truetrns
  • RetryInterval

    指定整數值表示從伺服器標示為關閉到外掛程式重試連線之間所經歷的時間長度。預設值為 60 秒。請針對每一個 ServerCluster 指定一個屬性或不指定。

  • RemoveSpecialHeaders

    在要求轉遞到應用程式伺服器之前,外掛程式會新增特殊標頭到要求中。這些標頭儲存應用程式所使用的要求的相關資訊。依預設,外掛程式會先從送入的要求中移除這些標頭,然後才新增它原本要新增的標頭。請針對每一個 ServerCluster 指定一個屬性或不指定。

    值可以是 truefalse。將此屬性設為 false 可能會因為沒有從送入的要求中移除標頭,而造成潛在的安全風險。

  • CloneSeparatorChange

    向外掛程式表示需要加號字元 (+) 作為複本分隔字元。某些資訊存取裝置無法處理在結合階段作業親緣性時,用來分開複本 ID 的冒號字元 (:)。您必須變更應用程式伺服器配置,使應用程式伺服器也利用加號字元來分開複本 ID。請針對每一個 ServerCluster 指定一個屬性或不指定。

    值可以是 truefalse

  • PostSizeLimit

    當外掛程式嘗試將要求傳送至應用程式伺服器時,容許使用的要求內容的 KB(1024 位元組)區塊數上限。 如果收到的要求大於這個大小,外掛程式會認為此要求無效。預設值為 -1 位元組,表示公佈大小沒有限制。請針對每一個 ServerCluster 指定一個屬性或不指定。

  • PostBufferSize

    指定讀取 HTTP 要求的內容時所使用的緩衝區大小上限(以 KB 為單位)。 如果最初收到要求的應用程式伺服器無法處理該要求,則會將這個緩衝區包含的資料傳送至另一應用程式伺服器。然後會嘗試由該應用程式伺服器來處理要求。 如果您不想將含有內容的要求放入緩衝區,然後重試,您可以將此選項設為零。

    這個選項可提高外掛程式的可用性。當這個選項設為非零值時,如果選取的應用程式伺服器未回應,則會重送任何包含有效負載的擱置封包。

    一般而言,POST 和 PUT 要求都附帶有效負載,但其他要求也可能附帶有效負載。如果此選項指定的值不是零,則即使 POST 或 PUT 要求不含有效負載,還是會重試。

    預設值是 0。 請針對每一個 ServerCluster 指定一個屬性或不指定。

  • ServerIOTimeoutRetry

    針對由於 ServerIOTimeout 而逾時的 HTTP 要求,指定 HTTP 外掛程式重試要求的次數限制。預設值 -1 表示重試次數沒有額外的限制。0 值表示不重試。重試次數一律受限於叢集中可用的伺服器數目。

    重要: 這個指引不適用於因為 HTTP 外掛程式 ConnectTimeout 而導致的連線失敗或逾時。
  • Server
    指定 WebSphere Application Server 實例,此實例根據外掛程式配置的遞送規則,而配置來處理遞送給它的要求。 此伺服器對應於本端機器或遠端機器上執行的應用程式伺服器。請針對每一個 ServerCluster 指定一個屬性或不指定。
    • Name

      指定伺服器的管理或邏輯名稱。針對每一個 Server,只能指定一個屬性。

    • CloneID

      如果這個唯一 ID 出現在要求的 HTTP Cookie 標頭或 URL(如果使用 URL 重新編寫)中,只要符合其他所有遞送規則,外掛程式就會將要求遞送至這個特定的伺服器。如果伺服器中未指定 CloneID,則此伺服器未啟用階段作業親緣性。每一個 Server 可以有一個屬性或沒有屬性。

      此屬性搭配階段作業親緣性一起使用。設定此屬性時,外掛程式會檢查送入的 Cookie 標頭或 URL 中是否有 JSESSIONID。如果找到 JSESSIONID,則外掛程式會尋找一或多個複本 ID。如果找到複本 ID,且符合這個屬性所指定的值,便會將要求遞送給這個伺服器,而不是在叢集內分配以平衡負載。

      最佳作法 最佳作法: 如果您不使用階段作業親緣性,請從配置中移除這些複本 ID,因為設定這些值時,外掛程式中需要額外處理要求。 如果外掛程式中沒有複本 ID,則會假定階段作業親緣性未啟用,並在叢集內分配要求以平衡負載。bprac
    • WaitForContinue

      指定將要求內容傳送至應用程式伺服器之前,是否使用 HTTP 1.1 100 Continue 支援。 可能的屬性值是 truefalse。預設值為 false;外掛程式在傳送要求內容之前,不會等待來自應用程式伺服器的 100 Continue 回應,因為這會降低效能。 請針對每一個 Server 指定一個屬性或不指定。

      若為 POST 要求,則會忽略此內容,以避免應用程式伺服器因為保持作用中逾時而中斷連線,造成要求失敗。

      在配置外掛程式來使用某些類型的 Proxy 防火牆時,請指定 true 啟用此功能。

    • LoadBalanceWeight

      指定當外掛程式執行加權「循環式」負載平衡時,與這個伺服器相關聯的加權。請針對每一個 Server 指定一個屬性或不指定。伺服器的起始值可以是 020 之間的任何整數。但對於不在執行中的伺服器,必須指定零。

      每一個伺服器每次處理完一個要求後,該伺服器的 LoadBalanceWeight 值就會降低。當伺服器叢集內的特定伺服器的加權達到 0 之後,只有具有階段作業親緣性的要求會遞送至該伺服器。當叢集中的所有伺服器都達到加權 0 時,叢集中的所有伺服器的加權就會重設,而且演算法會重新開始。

      最佳作法 最佳作法: 當伺服器不在執行中,請將該伺服器的加權設為零。之後,外掛程式便可以重設仍在執行中之伺服器的加權,並維護適當的負載平衡。bprac
    • ConnectTimeout

      讓外掛程式對應用程式伺服器執行非封鎖連線。 當外掛程式無法聯繫目的地以判斷埠是否可用時,非封鎖連線很有用。 請針對每一個 Server 指定一個屬性或不指定。

      如果沒有指定 ConnectTimeout 值或是設為 0,外掛程式會執行封鎖連線,在此情況下,外掛程式會等到作業系統逾時為止(2 分鐘之久,視平台而定),並容許外掛程式將伺服器標示為無法使用。0 值會導致外掛程式執行封鎖連接。大於 0 的值指定外掛程式等待順利連線的秒數。如果過了這個時間間隔之後仍沒有連線,外掛程式會將伺服器標示為無法使用,並由叢集中已定義的其中一個其他的伺服器進行失效接手。

      預設值為 5

    • ExtendedHandshake

      當外掛程式與應用程式伺服器之間有 Proxy 防火牆時使用。 在此情況下,外掛程式不會如預期般地進行失效接手。請針對每一個 Server 指定一個屬性或不指定。

      當 connect() 方法失敗時,外掛程式會將伺服器標示為關閉。然而,當外掛程式和應用程式伺服器之間有 Proxy 防火牆時,即使後端應用程式伺服器關閉,connect() 方法還是會成功。這會造成外掛程式無法正確地由其他應用程式伺服器進行失效接手。

      外掛程式在傳送要求之前會與應用程式伺服器執行某些信號交換,以確保它已啟動。此情況可讓外掛程式在應用程式伺服器關閉時進行失效接手。

      值可以是 truefalse

    • MaxConnections

      指定應用程式伺服器隨時可流經 Web 伺服器程序的擱置連線數上限。 請針對每一個 Server 指定一個元素。

      例如,在下列實務範例中:
      • 應用程式伺服器前端有五個執行 IBM HTTP Server 的節點。
      • 每一個節點啟動兩個程序。
      • MaxConnections 屬性設為 50。

      在此範例中,應用程式伺服器最多可能取得 500 個連線。將節點數目 5 乘以程序數目 2,再將該數字乘以 MaxConnections 屬性指定的數字 50,總計得到 500 個連線。

      [z/OS]在 z/OS 作業系統上,不需要這個屬性。使用「工作量管理程式 (WLM)」的 z/OS 控制器會動態處理新連線。

      依預設,MaxConnections 設定為 -1。如果此屬性設為 0 或 -1,則應用程式伺服器的擱置連線數目沒有限制。

    • Transport

      指定針對特定 WebSphere Application Server 實例來讀取和寫入要求的傳輸。傳輸提供必要資訊來決定要求送往的應用程式伺服器位置。 當定義多個傳輸來使用相同的通訊協定時,外掛程式無法辨識。無法預測外掛程式所選取的傳輸。外掛程式一律挑選它在處理時所遇到的第一個傳輸。 請針對每一個 Server 指定一或多個元素。

      您可以將伺服器配置成具有一個非安全傳輸和一個使用 SSL 的傳輸。在此配置中會比對送入的要求通訊協定,以判斷適合用來將要求傳送至應用程式伺服器的傳輸。

      • Hostname

        指定執行 WebSphere Application Server 實例的機器的主機名稱或 IP 位址。每一個傳輸只有一個屬性。

      • Port

        指定 WebSphere Application Server 實例接聽的埠。每一個傳輸只有一個屬性。

      • Protocol

        指定透過此傳輸通訊時使用的通訊協定 -- HTTP 或 HTTPS。必須為每一個 Transport,明確指定一個屬性。

    • Property
      請針對每一個傳輸指定一或多個元素或不指定。當傳輸的通訊協定設為 HTTPS 時,請使用這個元素來提供各種起始設定參數,例如 password、keyring 和 stashfile。例如,含有這些元素的 plugin-cfg.xml 檔部分看起來可能類似下列程式碼:
      <Transport Hostname="192.168.1.2" Port="9443" Protocol="HTTPS">
      <Property Name="keyring" value="c:/WebSphere/AppServer/keys/keyring.kdb"/>
      <Property Name="stashfile" value="c:/WebSphere/AppServer/keys/keyring.sth"/>
      <Property Name="password" value="WebAS"/>
      • Name

        指定要定義的內容的名稱。傳輸可辨識的支援名稱為 keyring、stashfile 和 password。

        避免困難 避免困難: 唯一可以指定給適用於 z/OS 的 WebSphere HTTP 外掛程式的名稱是 password。如果您指定 keyring 和 stashfile,則會忽略它們。gotcha
        針對每一個內容,只能指定一個屬性。
      • Value

        指定要定義的內容的值。針對每一個內容,只能指定一個屬性。

    • ServerIOTimeout

      可讓外掛程式設定對應用程式伺服器傳送要求和讀取回應時的逾時值(秒)。

      如果您將 ServerIOTimeout 屬性設為正數值,則嘗試連接伺服器時,一旦逾時就不再嘗試。但不會將伺服器視為無法使用,未來的要求仍會傳送至已發生無法使用逾時的伺服器。

      如果您將 ServerIOTimeout 屬性設為負數值,則每當發生逾時,伺服器就視為無法使用,且未來不會將要求傳送至已發生逾時的伺服器。

      如果未設定 ServerIOTimeout 屬性的值,依預設,外掛程式會使用區塊式 I/O 對應用程式伺服器寫入要求和讀取回應,而且不會讓 TCP 連線逾時。例如,您可以指定下列設定:

      <Server Name="server1" ServerIOTimeout=300>

      在此情況下,如果應用程式伺服器停止回應要求,外掛程式會等待 300 秒(5 分鐘)才讓 TCP 連線逾時。將 ServerIOTimeout 屬性設為合理的值可讓外掛程式較快使連線逾時,並儘可能將要求傳送到另一部應用程式伺服器。

      選取此屬性的值時,請記住,有時可能要花費數分鐘,應用程式伺服器才會處理要求。如果將 ServerIOTimeout 屬性的值設得太小,可能會造成外掛程式傳送不實的伺服器錯誤回應給用戶端。

      預設值為 900,等於 15 分鐘。

      避免困難 避免困難: ServerIOTimeout 限制外掛程式等待每一個個別讀取或寫入作業返回的時間量。ServerIOTimeout 不代表整體要求的逾時。gotcha

      若需如何配置 ServerIOTimeout 屬性的其他建議,請參閱「IBM 支援中心」網站上的 web server plug-in configuration technote

    所有對應用程式伺服器的要求和讀取回應,並非都需要相同的 ServerIOTimeout、ServerIOTimeoutRetry 及 Extended Handshake / 100 Continue 逾時規則。並非每一個 URL 都有相同的行為模式,而且在處理時,可能需要儘快讓要求逾時,或不要讓每一個伺服器重試要求。您可以指定特定的 URL 來使用已修改的 ServerIOTimeout、ServerIOTimeoutRetry,或短暫逾時的 ExtendedHandshake 或 100-Continues。其他 URL(未如此修改)會繼續使用 Plugin-cfg.xml 檔中指定的值。

    如果要指定 URL 來使用這種已修改的逾時處理,您需要使用 SetEnvIf 來修改 httpd.conf 檔。如同 Plugin-cfg.xml 檔中可用的內容,websphere-serveriotimeout 和 websphere-serveriotimeoutretry 也都可以接受相同的值。您只將能 WebSphere-shorten-handshake 設為 "1"。這會指示外掛程式使用 ConnectTimeout 值作為 ExtendedHandshake 或 100-Continue 回應的等待時間。例如,
    SetEnvIf Request_URI "\.jsp$" websphere-serveriotimeout=10
    SetEnvIf Request_URI "\.jsp$" websphere-serveriotimeoutretry=-1
    SetEnvIf Request_URI "\.jsp$" websphere-shorten-handshake=1
  • wsServerIOTimeout

    這個屬性針對 Web 伺服器外掛程式與 WebSocket 應用程式之間擱置的讀取和寫入動作,設定逾時值(秒)。 超出指定的值時,就會釋放無回應的應用程式伺服器所保留的資源。

    預設值為 30 秒。

  • wsServerIdleTimeout

    這個屬性設定 Web 伺服器外掛程式和 WebSocket 應用程式之間的連線維持閒置的逾時值(秒)。 超出指定的值時,就會釋放應用程式伺服器所保留的資源。

    預設值為 900 秒。

  • ClusterAddress

    ClusterAddress 就像伺服器元素一樣,可讓您像是針對伺服器元素一樣指定相同的屬性和元素。 不同之處在於 ServerCluster 內只能定義一個屬性。當您不希望外掛程式執行任何形式的負載平衡時,請使用 ClusterAddress,因為您在外掛程式和應用程式伺服器之間已具有某種類型的負載平衡器。

    避免困難 避免困難: 如果包含 ClusterAddress 標籤,則該標籤必須包含 Name 屬性。 外掛程式會使用 Name 屬性將叢集位址與正確的主機和埠相關聯。如果您沒有指定 Name 屬性,外掛程式會將使用相同主機和埠的伺服器所指定的名稱指派給叢集位址。
    <ClusterAddress Name="MyClusterAddr">
    <Transport Hostname="192.168.1.2" Port="9080" Protocol="HTTP"/>
    <Transport Hostname="192.168.1.2" Port="9443" Protocol="HTTPS">
    </ClusterAddress>
    gotcha

    如果送來的要求未建立親緣性,外掛程式會將它遞送至叢集位址(如果已定義)。如果已建立親緣性,外掛程式會直接將要求遞送至複本,完全略過叢集位址。如果未定義伺服器叢集的叢集位址,外掛程式會在主要伺服器清單中的各伺服器之間平衡負載。

    每一個 ServerCluster 可以有一個元素或沒有元素。

  • PrimaryServers

    針對此叢集,指定供外掛程式遞送要求的目標伺服器清單。如果未指定主要伺服器清單,外掛程式會將要求遞送至已定義給伺服器叢集的伺服器。請針對每一個 ServerCluster 指定一個元素或不指定。

  • BackupServers

    指定當主要伺服器清單中指定的所有伺服器都無法使用時,要求將會送往的伺服器清單。外掛程式不會在備份伺服器之間平衡負載,但是會依序遍訪清單,直到清單中已無伺服器為止,或直到已順利將要求傳送給應用程式伺服器,以及收到應用程式伺服器的回應為止。 請針對每一個 ServerCluster 指定一個元素或不指定。

VirtualHostGroup

指定 HTTP Host 標頭中所指定的一組虛擬主機名稱。請利用這個內容將配置來處理相似類型之要求的虛擬主機定義組合在一起。

下列範例顯示 VirtualHostGroup 元素及相關聯的元素和屬性:

<VirtualHostGroup Name="Hosts">
<VirtualHost Name="www.x.com"/>
<VirtualHost Name="www.x.com:443"/>
<VirtualHost Name="*:8080"/>
<VirtualHost Name="www.x.com:*"/>
<VirtualHost Name="*:*"/>
</VirtualHostGroup>

UriGroup

指定 HTTP 要求行上所指定的一組 URI。 相同的應用程式伺服器必須能夠處理這些 URI。路徑會比較送入的 URI 與群組中的 URI,以決定應用程式伺服器是否處理要求。

下列範例顯示 UriGroup 元素及相關聯的元素和屬性:

<UriGroup Name="Uris">
<Uri Name="/servlet/snoop/">
<Uri Name="/webapp/*/">
<Uri Name="*.jsp/">
</UriGroup>
  • Name

    指定這組 URI 的邏輯或管理名稱。針對每一個 UriGroup,只能指定一個屬性。

  • Uri

    指定 WebSphere Application Server 所處理的資源的虛擬路徑。 每一個 URI 指定應用程式伺服器需要處理的送入 URL。您可以在這些定義中使用萬用字元。每一個 UriGroup 可以有一或多個屬性。

    • Name

      指定要在 HTTP 要求行中指定的實際字串,以成功符合此 URI。 您可以在 URI 定義中使用萬用字元。您可以指定要由 WebSphere Application Server 處理的規則,例如 *.jsp 或 /servlet/*。當您組合應用程式時,如果您指定「啟用檔案提供」,則只會針對 Web 應用程式產生萬用字元 URI,不會考慮任何明確的 Servlet 對映。如果您指定依類別名稱來提供 Servlet,則會產生下列 URI:<Uri Name="Web_application_URI/servlet/*">

      每一個 URI 只有一個屬性。

    • AffinityCookie

      指定 Cookie 的名稱,供外掛程式在嘗試判斷入埠要求是否有階段作業親緣性時使用。 預設值為 JSESSIONID

      請參閱 CloneID 屬性的說明,以取得其他階段作業親緣性資訊。

      每一個 URI 可以有一個屬性或沒有屬性。

    • AffinityURLIdentifier

      指定 ID 的名稱,供外掛程式用以嘗試判斷入埠要求在特定複本的 URL 中是否有定義親緣性。 預設值為 jsessionid

      請參閱 CloneID 屬性的說明,以取得其他階段作業親緣性資訊。

      每一個 URI 可以有一個屬性或沒有屬性。

Route

指定要求遞送規則,供外掛程式據以判斷送入的要求是否必須由 WebSphere Application Server 處理。

遞送定義是外掛程式配置的核心元素。 它指定外掛程式如何根據要求的某些特性來處理要求。遞送定義包含其他主要元素:必要的 ServerCluster及 VirtualHostGroup、UriGroup 之一或兩者。

根據路徑的 VirtualHostGroup 和 UriGroup 中定義的資訊,外掛程式可決定是否將送入 Web 伺服器的要求傳送到此路徑中定義的 ServerCluster 元素。

以下是此元素的範例:

<Route VirtualHostGroup="Hosts" UriGroup="Uris" ServerCluster="servers"/>
  • VirtualHostGroup

    指定在決定路徑時使用的虛擬主機群組。將會比對送入的主機標頭和伺服器埠,以決定是否由應用程式伺服器處理此要求。

    路徑定義中可以省略此內容。如果它不存在,則在路徑判定的虛擬主機比對期間,每個要求都符合。

    每一個 Route 可以有一個屬性或沒有屬性。

  • UriGroup

    指定用於決定路徑的 URI 群組。針對每一個路徑,請選取一個群組或不選取群組。 要求的送入 URI 會與此群組中定義的 URI 比對,以決定是否由應用程式伺服器處理此要求。

    路徑定義中可以省略此內容。如果它不存在,則在路徑判定的 URI 比對期間,每個要求都符合。

  • ServerCluster

    指定接收要求且成功符合路徑的叢集。針對每一個路徑,只能選取一個叢集。

    叢集用來處理此要求。如果此路徑的 URI 和虛擬主機比對成功,則會將要求傳送至此叢集內定義的其中一個伺服器。

RequestMetrics

用來決定是否啟用要求度量,以及當要求度量已啟用時,如何根據網際網路通訊協定 (IP) 及統一資源識別碼 (URI) 過濾器來過濾要求。

以下是此元素的範例:

<RequestMetrics armEnabled="false"  loggingEnabled="true"
			rmEnabled="false" traceLevel="PERF_DEBUG">
  • armEnabled

    指定外掛程式中是否啟用 ARM 4 代理程式。設為 true 時會呼叫 ARM 4 代理程式。

    避免困難 避免困難: 若為 SunOne (iPlanet) Web 伺服器,obj.conf 檔中必須包含下列指引,才能啟用 ARM 4 支援:
    AddLog fn="as_term" 
    如果未包含此指引,則永遠不會呼叫 arm_stop 程序。gotcha

    針對 RequestMetrics 選取一個屬性或不選取屬性

  • loggingEnabled

    指定外掛程式中是否啟用要求度量記載。當它設為 true 且 traceLevel 未設為 NONE 時,將會記載要求回應時間及其他要求資訊。 設為 false 時不會記載要求。loggingEnabled 的值取決於系統內容 com.ibm.websphere.pmi.reqmetrics.loggingEnabled 所指定的值。 當此系統內容不存在時,loggingEnable 會設為 true。 針對 RequestMetrics,只能指定一個屬性。

  • rmEnabled

    指定外掛程式中是否啟用要求度量。設為 true 時,外掛程式(要求度量)會檢查過濾器,並在外掛程式日誌檔中記載要求追蹤記錄。 如果要求通過過濾器,則會執行此動作。當此屬性設為 false 時,將會忽略剩餘的要求度量屬性。針對 RequestMetrics,只能指定一個屬性。

  • traceLevel

    指出當 rmEnabled 屬性設為 true 時要記載多少資訊。 當此屬性設為 NONE 時,不會記載要求。當此屬性未設為 NONE 且 loggingEnabled 設為 true 時,完成要求後會記載要求回應時間及其他要求資訊。針對 RequestMetrics,只能指定一個屬性。

  • filters

    當 rmEnabled 為 true 時,過濾器會控制追蹤哪些要求。請針對 RequestMetrics 指定一個或兩個屬性或不指定。

    • enable

      當 enable 為 true 時,過濾器的 type 為 on,要求必須通過過濾器。針對每一個過濾器,只能指定一個屬性。

    • type

      有兩種過濾器:SOURCE_IP(例如,用戶端 IP 位址)和 URI。若為 SOURCE_IP 過濾器類型,則會根據已知的 IP 位址來過濾要求。 您可以使用星號 (*) 來指定 IP 位址的遮罩。如果使用星號,則星號一律必須為遮罩的最後一個字元,例如 127.0.0.*、127.0.*、127*。基於效能理由,型樣會依字元逐一比對,直到在過濾器中找到星號、發現不符,或發現過濾器完全相符為止。

      若為 URI 過濾器類型,則會根據送入的 HTTP 要求的 URI 來過濾要求。 型樣比對規則與比對 SOURCE_IP 位址過濾器相同。

      如果 URI 和用戶端 IP 位址過濾器都啟用,則要求度量需要這兩個過濾器類型都符合。如果都未啟用,則所有要求都視為符合。

      每一個過濾器只有一個屬性。

    • filterValues

      指定詳細的過濾器資訊。請針對每一個過濾器指定一或多個屬性。

      • value

        指定過濾器值給對應的過濾器類型。這個值可能是用戶端 IP 位址或 URI。針對每一個 filterValue,只能指定一個屬性。


指出主題類型的圖示 參照主題



時間戳記圖示 前次更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwsv_plugincfg
檔名:rwsv_plugincfg.html