工作設定

工作設定

工作設定

我有一個配置

  • 具有公共 IP 且具有 Nginx 反向代理的外部 VPS (A)
  • 使用 Nginx 的內部伺服器(B)
  • 獨立應用程式(非容器化)Keycloak 17.0.1

看起來像這樣。我為該伺服器註冊了一個網域名稱(比方說)auth.example.com

當我去https://auth.example.com我可以看到常規的 keycloak 頁面,其中包含管理控制台的連結。

在此輸入影像描述

透過點擊管理控制台,我可以正確登入以管理主領域。

在此輸入影像描述

問題

一旦我將 keycloak 容器化,管理控制台的所有連結和一些腳本就不再工作,因為它們從 更改https://auth.example.comhttps://localhost

在此輸入影像描述

配置

透過容器化 keycloak,我沒有修改任何 nginx 配置。

Nginx A

        location /
        {
                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-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://[nginx b ip];
        }

Nginx B

server
{
        server_name auth.example.com;
        location /
        {
            proxy_pass http://localhost:[exposed docker port];
        }
        listen 80;
}

獨立的keycloak(工作命令)

/usr/bin/bash bin/kc.sh start --proxy edge --hostname=auth.example.com --db-url-host localhost --db-username keycloak --db-password password

Docker 化的 keycloak (docker-compose)

  keycloak:
    image: quay.io/keycloak/keycloak:latest
    command: start --auto-build --features=token-exchange --hostname-strict-backchannel=true --hostname=auth.example.com
    depends_on:
      - db
    environment:
      KC_METRICS_ENABLED: "true"
      DB_VENDOR: [somedbvendor]
      DB_ADDR: db
      DB_DATABASE: keycloak
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
      KC_PROXY: edge
      PROXY_ADDRESS_FORWARDING: "true"
    ports:
      - "8081:8080"
    networks:
      - net

我想將我擁有的整個應用程式及其依賴項容器化,而 keycloak 是我無法完成的第一步。

相關內容