Apache + mod_auth_tkt + mod_rewrite + mod_proxy do diretório raiz

3

Eu tenho um aplicativo da web em execução em um servidor tomcat que está "atrás" de um servidor httpd Apache e estou usando o mod_proxy para encaminhar solicitações do httpd para o servidor tomcat. O servidor httpd está usando mod_auth_tkt para autenticação, que armazena as informações sobre o usuário na variável de ambiente REMOTE_USER. Eu passo essa variável do httpd para o servidor tomcat usando mod_rewrite, salvando-a como um cabeçalho (X-Forwarded-User).

O ProxyPass é configurado como

httpd_server/app/ -> tomcat_server/app/

este é o 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>

E isso funciona perfeitamente. Mas se tentar mudar o ProxyPass para

httpd_server/ -> tomcat_server/app/

Então mudando o vhost.conf para:

ProxyPass               /       http://127.0.0.1:8084/app/
ProxyPassReverse        /       http://127.0.0.1:8084/app/

Em seguida, o cabeçalho (X-Forwarded-User) termina vazio (nulo) no aplicativo da Web.

Após investigações posteriores descobri que, se eu tentar encaminhar uma variável diferente, por exemplo, REMOTE_PORT (ou até mesmo uma string), tudo funciona corretamente para ambas as configurações (o aplicativo recebe o cabeçalho corretamente).

Existe algum erro óbvio por que o encaminhamento de REMOTE_USER não funciona ao fazer proxy no diretório raiz? Eu senti falta de algo ou isso poderia ser um problema de mod_auth_tkt?

    
por Matjaž 28.04.2017 / 16:02

0 respostas