2013-01-20 42 views

回答

8

由於Tomcat是在Apache之外啓動的,因此它無法訪問Apache環境。這意味着你需要一些將環境變量從Apache傳遞給Tomcat的方式。

如果您使用mod_jk連接Apache和Tomcat,則可以使用JkEnvVar指令將特定變量傳遞給Tomcat。從mod_jk documentation

指令JkEnvVar允許您將環境變量從Apache服務器轉發到Tomcat引擎。您可以將一個默認值作爲第二個參數添加到指令中。如果未明確給出缺省值,則只會在運行時設置該變量的情況下才會發送該變量。 變量可以通過request.getAttribute(attributeName)作爲請求屬性在Tomcat端進行檢索。請注意,通過JkEnvVar發送的變量將不會在request.getAttributeNames()中列出。

如果您正在使用,而不是mod_jk HTTP代理(mod_proxy),您可以使用mod_headers通過環境變量請求頭,是這樣的:

RequestHeader set X-MYVAR %{MYVAR}e 

...然後在Tomcat中你會必須提取X-MYVAR標題。

+0

謝謝!這非常有幫助。 – DandyDev

+0

我想補充一點,我本週有機會試用這個建議的解決方案,它完美地工作,並解決了我正試圖解決的問題!再次感謝。 – DandyDev

2

此外,如果您使用的模塊代理通過AJP,即mod_proxy_ajp,根據docs

環境變量,其名稱具有前綴AJP_被轉發 爲AJP請求屬性的源服務器(與從密鑰名稱中刪除AJP_前綴 )。

+0

謝謝 - 這在Apache中設置完美,並且完全不需要對我的應用程序服務器代碼進行任何更改!偉大的提示!例如:'提供'ORIG_URL'給Tomcat''RewriteRule(。*) - [E = AJP_ORIG_URL:$ 1]。 –

相關問題