Haproxy检查Cookie是否设置

我有一个目前正在开发的Haproxyconfiguration,我正在使用以下代码,以便查找请求用户是否接受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 

这是我正在使用的configuration来设置cookie,如果用户将正确采用cookie,它的工作很好。 但是,如果最终用户不接受Cookie,则会生成无限redirect循环。 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,他们被tarpitted并有错误返回给他们。 我确信上面的代码会尝试设置cookie,然后tarpit他们,如果cookie未能设置..但这似乎并非如此。 有没有什么我做错了或者做一个这样做的另一种方法,而不需要用户页面来设置cookie?

克里斯非常感谢。

当您在前端部分中redirect时,您的客户端会再次发送到站点,并重新检查前端部分,以免从后端访问。

我会在应用程序端做这个检查,避免haproxy中的应用程序特定检查的可移植性。

您可以使用此ACL来检查现有的cookie:

 acl has_cookie res.hdr(X-MyCookieName) -m found