Haproxy

Haproxy 檢查是否設置了 Cookie

  • October 29, 2014

我有一個目前正在開發的 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

引用自:https://serverfault.com/questions/228823