haproxy use_backend condition (acl) 缺少后端

haproxy use_backend condition (acl) is missing the backend

我有一个应用程序安装在两台服务器上以解决平衡问题。

我想像下面这样路由流量:

服务器1:客户端 服务器 2:管理员

服务器 1 应用程序配置: 主机:192.168.0.101 端口:5031

服务器 2 应用程序配置: 主机:192.168.0.102 端口:5032

具有相同数据库连接的两台服务器中的应用程序相同。

我在 192.168.0.101 使用端口 5033 和设置安装了 haproxy:

frontend hh-test
        bind 192.168.0.101:5033
        mode tcp
        option tcplog
        acl is_admin path_reg ^/admin/sales$
        use_backend server2 if is_admin
        default_backend server1

backend server2
        mode tcp
        server admin 192.168.0.102:5032

backend server1
        mode tcp
        server client 192.168.0.101:5031

确实有效。当我访问 http://192.168.0.101:5033 It serves from Server 1 and when I access http://192.168.0.101:5033/admin/sales 时,它按预期从 server2 提供服务。但是一些请求转到 server1 访问相同的 /admin/sales url。很少。我不确定我做错了什么是某些请求转到了另一个后端。我可以有见识吗?

我必须使用 http 模式才能正确捕获 url。

所以工作版本是:

frontend hh-test
        bind 192.168.0.101:5033
        mode http
        option httplog
        acl is_admin path_reg ^/admin/sales$
        use_backend server2 if is_admin
        default_backend server1

backend server2
        mode http
        server admin 192.168.0.102:5032

backend server1
        mode http
        server client 192.168.0.101:5031