我有一个运行在Apache服务器后面的Tomcat服务器上的Web应用程序,我使用mod_proxy将请求从httpd转发到tomcat服务器。 httpd服务器正在使用mod_auth_tkt进行身份validation,将有关用户的信息存储在环境variablesREMOTE_USER中。 我把这个variables从httpd传递给使用mod_rewrite的tomcat服务器,将其保存为头(X-Forwarded-User)。
ProxyPass设置为
httpd_server/app/ -> tomcat_server/app/
这是vhost.conf:
<Location /> RewriteEngine On RequestHeader unset X-Forwarded-User RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule .* - [E=RU:%1,NS] RequestHeader add X-Forwarded-User %{RU}e </Location> <IfModule mod_proxy.c> ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /app/ http://127.0.0.1:8084/app/ ProxyPassReverse /app/ http://127.0.0.1:8084/app/ </IfModule>
这完美的作品。 但是,如果尝试将ProxyPass更改为
httpd_server/ -> tomcat_server/app/
所以把vhost.conf改成:
ProxyPass / http://127.0.0.1:8084/app/ ProxyPassReverse / http://127.0.0.1:8084/app/
然后,头部(X-Forwarded-User)在Web应用程序上结束为空(空)。
经过进一步的调查,我发现如果我尝试转发不同的variables,例如REMOTE_PORT(甚至string),一切工作正确的两个configuration(应用程序接收头正确)。
有什么明显的错误,当从根目录进行代理时,为什么REMOTE_USER的转发不起作用? 我错过了什么,或者这可能是一个mod_auth_tkt问题?