非标准端口Ingress部署Keycloak后链接端口缺失问题求助
Keycloak页面链接缺失端口问题的解决方案
1. 完善Keycloak环境变量配置
仅设置KC_HOSTNAME_URL不足以让Keycloak正确生成带端口的链接,需补充KC_HOSTNAME_PORT明确指定端口,并配置KC_PROXY适配反向代理场景:
extraEnvVars: - name: KC_HOSTNAME_URL value: "http://kc-test.local:18000" - name: KC_HOSTNAME_PORT value: "18000" - name: KC_PROXY value: "edge"
KC_PROXY=edge会让Keycloak信任反向代理传递的X-Forwarded-*头,确保生成的链接使用代理的端口。
2. 修正Nginx Ingress注解
原注解未正确传递包含端口的主机头,需调整为传递完整的X-Forwarded-Host(含端口)和正确的X-Forwarded-Port:
ingress: enabled: true hostname: "kc-test.local" annotations: nginx.ingress.kubernetes.io/server-snippet: | proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Proto http;
$server_port会获取Ingress Controller监听的18000端口,X-Forwarded-Host带上端口后,Keycloak能据此生成正确的链接。
3. 应用配置并验证
执行Helm升级命令使配置生效:
helm upgrade keycloak bitnami/keycloak -f your-values.yaml
升级完成后,访问http://kc-test.local:18000,检查页面内的链接是否已包含端口。
内容的提问来源于stack exchange,提问作者ProfHase85
相关产品推荐
相关产品推荐

