指令 JkOptions 允許您設定多個轉發選項,這些選項將啟用 (+) 或停用 (-) 下列選項。若沒有任何前導符號,選項將會啟用。
後面的四個選項 +ForwardURIxxx 互斥。其中一個是必要的,不允許使用負號前綴。自 1.2.24 版起,預設值為「ForwardURIProxy」。在 1.2.23 版中為「ForwardURICompatUnparsed」,在 1.2.22 版之前為「ForwardURICompat」。您可以開啟其他兩個選項之一來關閉預設值。除非您有非常好的理由要變更,否則您應該將其保留為預設值。
所有選項都從全球伺服器繼承到虛擬主機。支援啟用(加號選項)和停用(減號選項)的選項,會以下列方式繼承
options(vhost) = plus_options(global) - minus_options(global) + plus_options(vhost) - minus_options(vhost)
使用 JkOptions ForwardURIProxy,轉發的 URI 會在 Apache 內部處理後並在轉發到 Tomcat 之前進行部分重新編碼。這將與 mod_rewrite 的本地 URL 操作和 URL 編碼的會話 ID 相容。
JkOptions +ForwardURIProxy
使用 JkOptions ForwardURICompatUnparsed,轉發的 URI 將不會被解析。它符合規範且安全。它將始終轉發原始請求 URI,因此使用 mod_rewrite 重寫 URI,然後轉發重寫的 URI 將不起作用。
JkOptions +ForwardURICompatUnparsed
使用 JkOptions ForwardURICompat,轉發的 URI 將由 Apache 解碼。編碼字元將被解碼,並且明確的路徑組件(例如「..」)將已經被解析。這不太符合規範,如果您正在使用 JkMount 前綴,則不安全。此選項將允許在轉發之前使用 mod_rewrite 重寫 URI。
JkOptions +ForwardURICompat
使用 JkOptions ForwardURIEscaped,轉發的 URI 將是 ForwardURICompat 使用的 URI 的編碼形式。明確的路徑組件(例如「..」)將已經被解析。這將無法與 URL 編碼的會話 ID 結合使用,但它將允許在轉發之前使用 mod_rewrite 重寫 URI。
JkOptions +ForwardURIEscaped
JkOptions RejectUnsafeURI 將在解碼後封鎖所有包含百分比符號「%」或反斜線「\」的 URL。
大多數 Web 應用程式都不會使用此類 URL。使用 RejectUnsafeURI 選項,您可以封鎖多種已知的 URL 編碼攻擊。預設情況下,未設定此選項。
您也可以使用 mod_rewrite 來實現此類檢查,它功能更強大,但稍微複雜一些。
JkOptions +RejectUnsafeURI
JkOptions CollapseSlashesAll 已在 1.2.44 中棄用,如果使用,將被忽略。
JkOptions CollapseSlashesUnmount 已在 1.2.44 中棄用,如果使用,將被忽略。
JkOptions CollapseSlashesNone 已在 1.2.44 中棄用,如果使用,將被忽略。
JkOptions ForwardDirectories 與 Apache 的DirectoryIndex 指令一起使用。因此,mod_dir 應該可以透過靜態或動態(DSO)的方式提供給 Apache
當 DirectoryIndex 被設定時,Apache 將為指令中指定的每個 local-url 建立子請求,以確定是否有符合的本地檔案(這透過對檔案進行 stat 來完成)。
如果 ForwardDirectories 被設定為false(預設值)且 Apache 找不到任何符合的檔案,Apache 將提供目錄的內容(如果指令 Options 為該目錄指定了 Indexes)或403 Forbidden
回應(如果指令 Options 未為該目錄指定 Indexes)。
如果 ForwardDirectories 被設定為true 且 Apache 找不到任何符合的檔案,請求將被轉發到 Tomcat 以進行解析。這用於 Apache 由於各種原因無法在檔案系統上看到索引檔案的情況:Tomcat 在不同的機器上執行、JSP 檔案已經被預先編譯等。
請注意,本地可見的檔案將優先於僅 Tomcat 可見的檔案(也就是說,如果 Apache 可以看到檔案,則將提供該檔案)。如果 Tomcat 通常提供多種檔案類型,這一點很重要,例如 Velocity 頁面和 JSP 頁面。
JkOptions +ForwardDirectories
設定 JkOptions ForwardLocalAddress,您要求 mod_jk 傳送 Apache HTTP 伺服器的本機地址,而非遠端用戶端地址。Tomcat 遠端地址閥門可以使用此功能,僅允許來自已設定 Apache 伺服器的連線。
JkOptions +ForwardLocalAddress
設定 JkOptions ForwardPhysicalAddress,您要求 mod_jk 傳送實體對等 TCP IP 地址作為用戶端地址。預設情況下,mod_jk 使用由網路伺服器提供的邏輯地址。例如,模組 mod_remoteip 會將邏輯 IP 地址設定為 X-Forwarded-For
標頭中由代理伺服器轉送的用戶端 IP。
JkOptions +ForwardPhysicalAddress
JkOptions FlushPackets,您要求 mod_jk 在收到 Tomcat 傳送的每個 AJP 封包區塊後,清除 Apache 的連線緩衝區。此選項可能會大幅降低 Apache 和 Tomcat 的效能,因為寫入作業執行次數會比正常情況下更頻繁(例如:在每個回應的結尾)。
JkOptions FlushHeader,您要求 mod_jk 在收到 Tomcat 傳送的回應標頭後,清除 Apache 的連線緩衝區。
JkOptions DisableReuse,您要求 mod_jk 在使用連線後立即關閉連線。通常,mod_jk 會使用持續連線,並集中閒置連線,以便在必須將新要求傳送至 Tomcat 時重複使用這些連線。
使用此選項可能會大幅降低 Apache 和 Tomcat 的效能。僅在無法解決的網路問題情況下,才將此選項作為最後的手段。如果 Apache 和 Tomcat 之間的防火牆會在不發出通知的情況下終止閒置連線,請嘗試結合使用工作者屬性 socket_keepalive 和作業系統中適當的 TCP keepalive 值。
JkOptions ForwardKeySize,您要求 mod_jk 在使用 ajp13 時,也轉送 Servlet API 2.3 所需的 SSL 金鑰大小。當 Servlet 引擎為 Tomcat 3.2.x 時,不應設定此旗標(預設為關閉)。
JkOptions +ForwardKeySize
JkOptions ForwardSSLCertChain,您要求 mod_jk 在使用 ajp13 時,轉送 SSL 憑證鏈(預設為關閉)。Mod_jk 僅將 SSL_CLIENT_CERT
傳遞至 AJP 連接器。對於自簽憑證或由根 CA 憑證直接簽署的憑證,這不是問題。但是,有許多憑證是由中間 CA 憑證簽署的,這是一個重大問題:Servlet 將無法自行驗證用戶端憑證。透過 AJP 連接器將 SSL_CLIENT_CERT_CHAIN
傳遞至 Tomcat,可以修正此錯誤。
此指令僅存在於版本 1.2.22 以後。
JkOptions +ForwardSSLCertChain
JkEnvVar 指令讓您可以將環境變數從 Apache 伺服器轉送至 Tomcat 引擎。您可以將預設值新增為指令的第二個參數。如果未明確提供預設值,則只有在執行期間設定變數時才會傳送變數。
變數可以在 Tomcat 端作為要求屬性透過 request.getAttribute(attributeName) 擷取。請注意,透過 JkEnvVar 傳送的變數不會列在 request.getAttributeNames() 中。
變數會從全域伺服器繼承至虛擬主機。
JkEnvVar SSL_CLIENT_V_START undefined