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

Настройка нескольких ProxyPassReverseCookiePath в Apache HTTP

У меня есть сервер с обратным прокси-сервером Apache. Серверная машина содержит 2 веб-приложения, работающих под:

По сути, это разные версии веб-приложения, и мы хотим, чтобы они работали обе. Обе веб-приложения создают файл cookie следующим образом:

Set-Cookie: sessionid=as7d86fa98sg67; Path=/app; HttpOnly

Обратите внимание, что нет Domain в заголовке файла cookie.

Я добавил 2 разных ProxyPassReverseCookiePath такие директивы:

Цель состоит в том, чтобы у каждого веб-приложения был свой Path=/app преобразованы в соответствующий контекст. Однако директивы ProxyPassReverseCookiePath, похоже, перекрывают друг друга и не знают о веб-приложении, для которого они запускаются.

TL; DR:

ProxyPass /app1/ http://localhost:8000/app/
ProxyPassReverse /app1/ http://localhost:8000/app/
ProxyPassReverseCookiePath /app /app1

ProxyPass /app2/ http://localhost:8001/app/
ProxyPassReverse /app2/ http://localhost:8001/app/
ProxyPassReverseCookiePath /app /app2

Эта конфигурация работает, за исключением свойства пути к cookie. В обоих случаях он заменяется на Path=/app1/ тогда как я хотел бы, чтобы это было специфичным для каждого приложения, обрабатывающего запрос.

После поиска решения следует сгруппировать директивы под <Location> тег:

<Location /app1>
  ProxyPassReverseCookiePath /app /app1
</Location>

<Location /app2>
  ProxyPassReverseCookiePath /app /app2
</Location>

Таким образом, Apache знает, как правильно применять каждую директиву в зависимости от источника ответа.