Прокси-куки Apache работают только с первым приложением - PullRequest
1 голос
/ 18 января 2012

застрял при настройке Apache в качестве прокси для приложений, работающих на Tomcat на разных компьютерах.Кажется, все работает на первом приложении - WebApp1.Но слева ProxyPassReverseCookiePath не работает.ProxyPassReverseCookiePath работает только на первом приложении.При доступе к другим приложениям в URL добавляется jsessionid.Что я пропустил и как исправить на WebApp2 и WebApp3?Спасибо

httpd-vhosts.con:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ProxyRequests off
    ProxyPreserveHost on

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /WebApp1/ ajp://192.168.1.98:8009/WebApp1/
    ProxyPassReverse /WebApp1/ ajp://192.168.1.98:8009/WebApp1/
    ProxyPassReverse /WebApp1/ http://192.168.1.98:8080/WebApp1/
    ProxyPassReverseCookiePath /WebApp1 /WebApp1/

    ProxyPass /WebApp2/ ajp://192.168.1.98:8009/WebApp2/
    ProxyPassReverse /WebApp2/ ajp://192.168.1.98:8009/WebApp2/
    ProxyPassReverse /WebApp2/ http://192.168.1.98:8080/WebApp2/
    ProxyPassReverseCookiePath /WebApp2 /WebApp2/

    ProxyPass /WebApp3/ ajp://192.168.1.98:8009/WebApp3/
    ProxyPassReverse /WebApp3/ ajp://192.168.1.98:8009/WebApp3/
    ProxyPassReverse /WebApp3/ http://192.168.1.98:8080/WebApp3/
    ProxyPassReverseCookiePath /WebApp3 /WebApp3/
</VirtualHost>

Ответы [ 3 ]

2 голосов
/ 19 января 2012

Решил, изменив путь к каталогу cookie:

ProxyPassReverseCookiePath /WebApp1/ http://192.168.1.98:8080/WebApp1/
1 голос
/ 18 декабря 2015

Одним из преимуществ ajp является то, что он отправляет исходный URL-адрес в веб-приложение.Таким образом, любые преобразования ProxyPassReverse и ProxyPassReverseCookiePath не являются необходимыми, поэтому вы можете просто пропустить эти директивы.

Вне зависимости от этого, ProxyPassReverseCookiePath просто заменяет параметр path в файлах cookie, которые приходят извеб-приложение.Как и в вашем случае, путь, по которому осуществляется доступ к веб-приложению, совпадает с путем, по которому оно предоставляется Apache, нет необходимости заменять что-либо в пути к cookie.

Я мог бы представитьпричина, по которой ваш исходный код не работает, заключается в том, что он заменяет /WebApp1 на /WebApp1/, поэтому вы можете получить /WebApp1// в пути к cookie, что может запутать браузеры.(Я не уверен, что Apache выполняет преобразование в этом случае и не смущает ли это браузеры.) Я мог представить, что опубликованное вами решение работает, потому что Apache проигнорировал директиву, поскольку он содержит неверный путь.(Я также не уверен, что именно так ведет себя Apache в этом случае.)

0 голосов
/ 12 июля 2018

У меня была та же проблема, и следующая конфигурация исправила мою проблему.

step-1: Добавлено свойство ProxyPreserveHost On на vhost.

шаг 2: настроенный ProxyPassReverseCookiePath для всех приложений, как показано ниже

   ProxyPassReverseCookiePath /   /WebApp1

   ProxyPassReverseCookiePath /   /WebApp2

   ProxyPassReverseCookiePath /   /WebApp3

Надеюсь, это поможет!

...