Haproxy
Haproxy 檢查是否設置了 Cookie
我有一個目前正在開發的 Haproxy 配置,我正在使用以下程式碼來查找請求使用者是否會接受 cookie,因為最終目的地的腳本需要 cookie 以確保安全。
frontend connection_Handler # This proxy requires the acceptance of cookies to work acl cookie_set hdr_sub(cookie) YuL7oo2UG3O3=zdQ66fM0lpRd redirect prefix / set-cookie YuL7oo2UG3O3=zdQ66fM0lpRd unless cookie_set use_backend Cookie_Block unless cookie_set
這是我用來設置 cookie 的配置,如果使用者正確採用 cookie,它會很好用。但是,如果最終使用者不接受 cookie,則會生成無限重定向循環。Cookie_Block 後端如下 -
backend Cookie_Block # For this block we will hold the connection for 5 seconds then reject # The error will display the reason as to why the connection has been denied mode http timeout tarpit 5s errorfile 403 /errors/NoCookie.txt reqitarpit .
我想要達到的預期效果是,如果使用者不接受他們被緩送的 cookie 並將錯誤返回給他們。我確信上面的程式碼會嘗試設置 cookie,然後在 cookie 設置失敗時對其進行 tarpit。但情況似乎並非如此。是否有什麼我做錯了,或者沒有將使用者帶到頁面來設置 cookie 的替代方法?
非常感謝,克里斯。
當您在前端部分重定向時,您的客戶端會再次發送到該站點,並且重新檢查前端部分,因此它永遠不會到達後端。
我會在應用程序端進行此檢查,避免在 haproxy 中針對可移植性進行特定於應用程序的檢查。
您可以使用此 ACL 來檢查現有的 cookie:
acl has_cookie res.hdr(X-MyCookieName) -m found