我使用Haproxy作为Layer7 http代理将客户端的请求传输到一个服务器。作为一个长连接,在将每个请求传输到服务器之前,我需要将一些url字符串替换为另一个。例如:reqirep ^([^\ ])\ /test/(.) \1\ /serverfault/\2
我跟踪并发现HAProxy只处理每个连接的第一个请求。换句话说,Haproxy只替换了第一个POST /test/为什么要发布/堆栈溢出/为什么。第二,第三..。不会..。
“代理手册”说:“当客户端与服务器通信时,Haproxy只会分析、记录和处理每个连接的第一个请求。”由于下一个请求与长连接中的前一个请求有关,所以我希望替换字符串并保持连接处于活动状态,并让客户端在他们需要时关闭连接。我已经尝试过“选项httpclose”或“选项http-server-close”,这对我不起作用。在一个长连接中,Haproxy不支持用reqirep替换任何请求吗?是否有任何选择或方法来实现它。
发布于 2013-08-19 15:06:49
哈代理还没有完全支持维持生命。计划在1.5“稳定”时全面实施。尽管如此,我已经在一个非常大的生产环境中使用1.5分支机构已经将近一年了,没有任何问题。
我建议使用http close,这只会将haproxy服务器关闭到后端服务器(这意味着它将允许客户端使用保存alives来访问haproxy)。这将解决不修改第二、第三等请求的问题。听起来好像你想要同一个客户总是去同一个后端。如果是这样的话,那么您可以考虑使用棍子表或cookie关联。https://code.google.com/p/haproxy-docs/wiki/cookie
如果您真的需要将look一直保存到后端,您可能需要考虑使用不同的产品,但从您的描述来看,我认为您可以通过使用持久性来解决问题。
https://stackoverflow.com/questions/18244728
复制相似问题