You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak高可用部署遇过多重定向及网络响应异常求助

Keycloak高可用部署重定向/网络问题解决方案

核心问题分析

问题根源在于多Keycloak实例会话未同步,以及Nginx反向代理配置未适配Keycloak的会话机制——请求在不同实例间切换时会话不一致,触发重定向循环或网络响应异常;另外服务器2上两个Keycloak实例共用80/443端口属于配置错误,会导致端口冲突。

具体修复步骤

1. 修正Keycloak端口冲突问题

服务器2上的两个Keycloak实例不能同时绑定80或443端口,修改Docker Compose配置,给两个实例分配不同端口,比如:

# 第一个Keycloak实例
services:
  keycloak1:
    image: quay.io/keycloak/keycloak:latest
    ports:
      - "8080:8080"
    # 其他配置...

# 第二个Keycloak实例
  keycloak2:
    image: quay.io/keycloak/keycloak:latest
    ports:
      - "8081:8080"
    # 其他配置...

2. 配置Keycloak分布式会话共享

Keycloak默认用本地会话存储,多实例必须配置分布式缓存共享会话,基于现有PostgreSQL数据库实现:
给每个Keycloak实例添加以下环境变量:

environment:
  - KC_CACHE=ispn
  - KC_CACHE_STACK=postgres
  - KC_DB=postgres
  - KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak
  - KC_DB_USERNAME=keycloak
  - KC_DB_PASSWORD=你的数据库密码
  - KC_HOSTNAME=你的公网域名/IP
  - KC_HOSTNAME_PORT=443 # 对应Nginx对外端口,HTTP则填80

3. 调整Nginx负载均衡配置

确保Nginx正确传递请求头,同时启用会话粘性减少跨实例切换:
修改nginx.conf的上游和代理配置:

# 上游服务器配置,指向服务器2的两个Keycloak实例
upstream keycloak_cluster {
  server 服务器2IP:8080;
  server 服务器2IP:8081;
  ip_hash; # 基于客户端IP做会话粘性,确保同一用户请求落到同一实例
}

server {
  listen 80;
  listen 443 ssl;
  server_name 你的公网域名/IP;

  location / {
    proxy_pass http://keycloak_cluster;
    # 传递必要请求头,让Keycloak识别真实客户端信息
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    # 修正Cookie路径与属性
    proxy_cookie_path / "/; secure; HttpOnly; SameSite=Lax";
  }
}

4. 验证实例连通性

重启所有服务后,测试Nginx到每个Keycloak实例的连通性:

curl http://服务器2IP:8080/health/live
curl http://服务器2IP:8081/health/live

确保返回{"status":"UP"},说明实例正常运行。

验证修复效果

  1. 访问Keycloak首页,进入管理控制台测试登录流程,确认无重定向错误
  2. 登录后刷新仪表盘,检查是否还有network response was not ok提示
  3. 手动停止其中一个Keycloak实例,验证剩余实例是否能正常提供服务

内容的提问来源于stack exchange,提问作者Insight Habor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:13