在 Apache HTTP 中配置多个 ProxyPassReverseCookiePath

在 Apache HTTP 中配置多个 ProxyPassReverseCookiePath

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

  • 本地主机:8000/应用程序并暴露为my.url.com/app1
  • 本地主机:8001/应用程序并暴露为my.url.com/app2

它们本质上是 Web 应用程序的不同版本,我们希望它们都能正常运行。两个都webapps 像这样创建 cookie:

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

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

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

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

目标是每个 Web 应用都将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

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

答案1

经过一番搜索,解决方案是将指令分组到标签下<Location>

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

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

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

相关内容