簡體   English   中英

如何在使用Apache mod_proxy時保持不同的會話

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM