Назад | Перейти на главную страницу

Apache + mod_auth_tkt + mod_rewrite + mod_proxy из корневого каталога

У меня есть веб-приложение, работающее на сервере Tomcat, который находится «за» сервером Apache httpd, и я использую mod_proxy для пересылки запросов с httpd на сервер Tomcat. Сервер httpd использует для аутентификации mod_auth_tkt, который хранит информацию о пользователе в переменной окружения REMOTE_USER. Я передаю эту переменную из httpd на сервер tomcat с помощью mod_rewrite, сохраняя ее как заголовок (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) в веб-приложении оказывается пустым (нулевым).

После дальнейшего расследования я обнаружил, что если я попытаюсь переслать другую переменную, например REMOTE_PORT (или даже строку), все будет работать правильно для обеих конфигураций (приложение правильно получает заголовок).

Есть ли очевидная ошибка, почему пересылка REMOTE_USER не работает при прокси-сервере из корневого каталога? Я что-то пропустил или это может быть проблема с mod_auth_tkt?