2013-01-20 41 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]。 –

相关问题