【问题标题】:How to configure multiple keycloak instances on nginx如何在 nginx 上配置多个 keycloak 实例
【发布时间】:2022-01-28 16:07:23
【问题描述】:

我有两个 keycloak 实例在两个单独的 swarm 堆栈上运行。

这就是我的堆栈文件的样子:

实例 1

version: "3.4"

services:
  # keycloak Server
  keycloak:
    image: jboss/keycloak:11.0.0
    deploy:
      replicas: 1
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first
      restart_policy:
        condition: on-failure
    environment:
      # DB_STUFF
      PROXY_ADDRESS_FORWARDING: "true"
    ports:
      - "18080:18080"
    command:
      - "-b"
      - "0.0.0.0"
      - "-Djboss.socket.binding.port-offset=10000"

实例 2

version: "3.4"

services:
  # keycloak Server
  keycloak:
    image: jboss/keycloak:11.0.0
    deploy:
      replicas: 1
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first
      restart_policy:
        condition: on-failure
    environment:
      # DB_STUFF
      PROXY_ADDRESS_FORWARDING: "true"
    ports:
      - "18081:18081"
    command:
      - "-b"
      - "0.0.0.0"
      - "-Djboss.socket.binding.port-offset=10001"

和nginx的配置:

    location /auth/ {
            proxy_pass http://localhost:18080/auth/;
            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;
            proxy_set_header X-Forwarded-Port 80;
    }

    location /auth2/ {
            proxy_pass http://localhost:18081/auth/;
            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;
            proxy_set_header X-Forwarded-Port 80;
    }

我希望能够通过单独的路径访问它们中的每一个,但是当我尝试访问位于 /auth2 的第二个实例的管理控制台时,它会将我重定向到位于 /auth 的第一个实例。 我对 nginx 知之甚少,因此不胜感激。

【问题讨论】:

    标签: nginx wildfly keycloak docker-swarm


    【解决方案1】:

    您可能希望在您的第二个 Keycloak 实例上将 change the web context 发送到 auth2

    在您的第二个 Keycloak 实例上将环境变量 WEB_CONTEXT 设置为 auth2。然后像这样添加一个 CLI 脚本文件web-context.cli

    set WEB_CONTEXT=${env.WEB_CONTEXT:auth}
    set KEYCLOAK_CONFIG_FILE=${env.KEYCLOAK_CONFIG_FILE:standalone-ha.xml}
    set JBOSS_HOME=${env.JBOSS_HOME}
    
    echo Setting web-context to $WEB_CONTEXT in $JBOSS_HOME/standalone/configuration/$KEYCLOAK_CONFIG_FILE
    
    embed-server --server-config=$KEYCLOAK_CONFIG_FILE --std-out=echo
    /subsystem=keycloak-server/:write-attribute(name=web-context,value=$WEB_CONTEXT)
    stop-embedded-server
    

    将文件添加到/opt/jboss/startup-scripts

    有关详细信息,请参阅README 中的“在启动时运行自定义脚本”部分。

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2015-04-02
      • 2019-07-22
      • 1970-01-01
      相关资源
      最近更新 更多