故障描述

在内网部署了一台 Keycloak,然后在外部负载均衡器配置了反向代理(同时挂载了 TLS 证书),但是测试时发现外部用户无法访问 Keycloak,卡在下列页面。

Keycloak admin 页面打不开,卡在加载界面_开发者

又或者报下列错误

Keycloak admin 页面打不开,卡在加载界面_内网_02


通过浏览器的开发者功能发现,用户在请求一个页面时的访问 URL 不对(auth2.xxx是内网用的域名,auth.xxx才是正确的域名)。

Keycloak admin 页面打不开,卡在加载界面_开发者_03

查询后在下列论坛中找到了解法:

修改 Keycloak 的环境变量,添加 KC_HOSTNAME_ADMIN_URL 行(需要是完整的 URL):

  keycloak:
    restart: always
    image: quay.io/keycloak/keycloak:latest
    command: start --proxy edge --hostname=auth.xx.com --hostname-strict=false --db postgres --db-url-host postgres --db-username keycloak --db-password Admin123
    depends_on:
    - postgres
    ports:
    - "8088:8080"
    environment:
    - KEYCLOAK_ADMIN=admin
    - KEYCLOAK_ADMIN_PASSWORD=123456
    - KC_HOSTNAME_ADMIN_URL=https://auth.xx.com