Apache-2.4

在 Apache HTTP 中配置多個 ProxyPassReverseCookiePath

  • August 16, 2019

我有一個伺服器,前面有一個 Apache 反向代理。伺服器機器包含 2 個在以下環境下執行的 Web 應用程序:

  • localhost:8000/app並暴露為my.url.com/app1
  • localhost:8001/app並暴露為my.url.com/app2

它們本質上是 webapp 的不同版本,我們希望它們都啟動。兩個webapps 都會像這樣創建一個 cookie:

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

請注意,cookie 標頭上沒有Domain屬性。

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

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

目標是每個 webapp 都將其Path=/app轉換為適當的上下文。但是 ProxyPassReverseCookiePath 指令似乎相互覆蓋,並且不知道它們執行的 webapp。

TL;博士:

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 知道根據響應的來源正確應用每個指令。

引用自:https://serverfault.com/questions/918227