작업 설정

작업 설정

작업 설정

나는 다음과 같은 구성을 가지고 있습니다.

  • Nginx 역방향 프록시(A)가 있는 공용 IP를 사용하는 외부 VPS
  • Nginx를 사용하는 내부 서버(B)
  • 독립형 애플리케이션(컨테이너화되지 않음) Keycloak 17.0.1

이것은 다음과 같습니다. 해당 서버에 도메인이 등록되어 있는데, 이는 (예를 들어)auth.example.com

내가 갈 때https://auth.example.com관리 콘솔 링크가 포함된 일반 keycloak 페이지를 볼 수 있습니다.

여기에 이미지 설명을 입력하세요

관리 콘솔을 클릭하면 제대로 로그인하여 마스터 영역을 관리할 수 있습니다.

여기에 이미지 설명을 입력하세요

문제

keycloak을 컨테이너화하자마자 관리 콘솔의 모든 링크와 일부 스크립트가 에서 로 변경되어 더 이상 작동하지 않습니다 https://auth.example.com.https://localhost

여기에 이미지 설명을 입력하세요

구성

keycloak을 컨테이너화하여 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];
        }

엔진스 B

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

독립형 키클로크(작업 명령)

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

도커화된 키클로크(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은 완료할 수 없는 첫 번째 단계입니다.

관련 정보