在 Apache HTTP 中配置多个 ProxyPassReverseCookiePath

Pen*_*Kon 5 cookies proxypass apache-2.4

我有一台前面有 Apache 反向代理的服务器。服务器计算机包含 2 个运行在以下位置的 Web 应用程序:

  • localhost:8000/app并公开为my.url.com/app1
  • localhost:8001/app并公开为my.url.com/app2

它们本质上是网络应用程序的不同版本,我们希望它们都可用。两个web 应用程序都会创建一个 cookie,如下所示:

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

Domain请注意, cookie 标头上没有属性。

我添加了 2 个不同的ProxyPassReverseCookiePath指令,如下所示:

  • ProxyPassReverseCookiePath /app /app1
  • ProxyPassReverseCookiePath /app /app2

目标是每个网络应用程序都将其Path=/app转换为适当的上下文。然而,ProxyPassReverseCookiePath 指令似乎相互覆盖,并且不了解它们运行的​​ Web 应用程序。

长话短说:

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
Run Code Online (Sandbox Code Playgroud)

此配置有效,但 cookie 路径属性除外。对于这两种情况,它都会被替换为Path=/app1/,而我希望它特定于处理请求的每个应用程序。

Pen*_*Kon 5

搜索解决方案后,将指令分组到标签下<Location>

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

<Location /app2>
  ProxyPassReverseCookiePath /app /app2
</Location>
Run Code Online (Sandbox Code Playgroud)

这样 Apache 就知道根据响应的来源正确应用每个指令。