我在 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
...
...