HAProxy 因 path_beg 不匹配而拒绝 HTTP 请求

HAProxy 因 path_beg 不匹配而拒绝 HTTP 请求

我在 Keycloak 节点前面有一个 HAProxy 节点。我只想公开服务用户所需的 API(而不是管理面板),我在 haproxy.cfg 前端块上有以下内容

frontend haproxy-main 
    ...
    ...
    acl kc_adm path_beg,url_dec -i / /admin/ /welcome/ /metrics /health
    acl kc path_beg,url_dec -i /js/ /realms/ /resources/ /robots.txt 
    http-request allow if kc !kc_adm
    ...
    ...

但所有请求仍能通过。我的完整配置如下:https://gist.github.com/desertSniper87/146e027a60152a34445aa3a0c76638d1

我的 HAProxy 版本HA-Proxy version 2.0.13-2ubuntu0.5 2022/03/02在 Ubuntu 20.04.1 LTS 上运行

答案1

我没有使用 http-request allow/deny,而是使用了use_backend

frontend haproxy-main
    ...
    ... 

    acl kc path_beg -i /js/ /realms/ /resources/ /robots.txt 
    default_backend no-match
    use_backend keycloak_server if kc 

backend no-match 
    mode http
    http-request deny deny_status 400

backend keycloak_server
    ...
    ...

相关内容