[英]How to keep different session while using apache mod_proxy
我有一個網站www.example.com,我正在使用apache mod_proxy將另一個子域sub.example.com映射到URL www.example.com/sub,但同時我需要保持不同的會話狀態www.example.com和www.example.com/sub。 可能嗎? 我正在使用proxypass和proxypassreverese實現這一目標。
ProxyPass /sub http://sub.example.com
ProxyPassReverse /sub http://sub.example.com
如果您擁有http://sub.example.com/
和http://www.example.com/sub
則cookie本身不應沖突:Tomcat將發出JSESSIONID
cookie,瀏覽器應將該cookie綁定到主機中。當時使用(www.example.com或sub.example.com)。
上面的配置似乎表明您始終在使用www.example.com
並且僅在后台重命名主機。
您可能對此有問題,因為Tomcat將分配一個JSESSIONID
cookie,該cookie的Path
與Tomcat所見的上下文路徑相匹配(即/
因為您似乎在Tomcat上使用ROOT
Web應用程序),並且客戶端將始終看到相同的主機名。 結果將是兩個JSESSIONID
cookie,如果用戶訪問了兩個“應用程序”並從每個應用程序接收到cookie,則將在每次請求時將其傳遞給http://www.example.com/
。 Tomcat將忽略任何與現有會話不匹配的JSESSIONID
cookie,然后有多個可供選擇,但是如果有多個有效的JSESSIONID
cookie,則它可能對環境因素(如標頭排序)敏感。
最佳策略是避免使用身份驗證和/或Cookie的Web應用程序具有重疊的URL空間。 也許在/sub
上部署一個Web應用程序,在/top
上部署另一個Web應用程序。 對於根本不使用任何cookie的頁面,請使用頂層(例如,除了資源名稱之類的路徑,如index.html
)。
如果您確實想涉足事物,則可以使用Web應用程序的WEB-INF/context.xml
文件中的<Context>
元素的sessionCookiePath
。 你可以將其設置為/sub
上部署的Web應用程序/sub
。 這可能會有所幫助,但是您仍然必須擁有一個單獨部署的(您的)Web應用程序,以便為www.example.com
-deployed應用程序使用不同的cookie路徑。 基本上,這一切都變得一團糟,您更值得花時間解開事物來完全避免問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.