Apache-2.4
在 Apache HTTP 中配置多個 ProxyPassReverseCookiePath
我有一個伺服器,前面有一個 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 知道根據響應的來源正確應用每個指令。