我有多個蔚藍的網站具有以下特點多重親和餅乾
- 在其自己的網絡服務器(應用服務計劃),每個站點運行
- 他們正在運行多個實例
- 他們有自己的共享的域
- 他們啓用ARR(故意)
其中一個網站是子域名下主站點,並使用該域,而不使用子域作爲其主機名。這是我的問題的根源。
分別訪問sub.domain.com
和domain.com
(兩個不同的網站,在不同的應用服務計劃中)將爲每個網站設置親和力cookie。
Cookie規範指出,Cookie應包含在對cookie的域屬性的任何子域的請求中。這意味着,如果我現在訪問sub.domain.com
,瀏覽器將包含兩個關聯cookie,因爲它在技術上是domain.com
的子域。
Azure的負載均衡器顯然只查看第一個包含的親和cookie。如果這恰好屬於domain.com
,那麼它將包含一個無效值,並且負載均衡器會將請求轉發給隨機空閒實例。響應將包含一個帶有有效關聯cookie的set-cookie頭文件,但無論如何,這將作爲第二個cookie包含在後續請求中,問題依然存在。只要domain.com
關聯Cookie存在,以及我們的網站依賴的粘性會話,就可以完全禁用所有子域的ARR。
現在,我已在domain.com
網站上禁用了ARR,因爲它只能在單個實例中運行。但這只是因爲我們正在試生產纔有可能。在不久的將來某個時候,我需要擴展到至少兩個實例,因爲天藍色的SLA是有效的。
該問題可以通過將網站domain.com
遷移到子域名(f.ex .: www.domain.com
)來解決,但我真的不希望這樣做。
理想情況下,我希望負載平衡器檢查所有包含的關聯cookie,而不僅僅是第一個。但直到已修復,我很想知道任何解決方法。據我所知,我可以控制的ARR的唯一方面是應該啓用還是不啓用。
哇,從來沒有真正想到這種情況。您是否向Azure提交了支持憑單?此外,讓您的應用程序依賴於ARR工作總是有點危險,因爲如果某個實例出於某種原因而出現故障,您將遇到問題。我確實理解某些傳統應用程序需要它。 – juunas
在我們說話時獲得活動門票,我將在此處報告結果。另外,我完全理解並同意你的觀點。 –