У меня есть сервер с обратным прокси-сервером 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 знает, как правильно применять каждую директиву в зависимости от источника ответа.