nginx后面的Keycloak无法转发到登录页面

问题描述 投票:0回答:1

Keycloak 本身工作正常。我创建了一个子域 https://auth.mydomain.com ,它指向在 GCP 上运行的虚拟机。我已将 nginx 配置为在内部将请求转发到 Keycloak。到目前为止,一切都很好。当我在 Keycloak UI 中单击“管理控制台”时,它会重定向到 https://auth.mydomain.com/admin/master/console 并挂起并显示“正在加载管理 UI”。根据网络日志,当Keycloak尝试通过https://auth.mydomain.com:8081/realms/master/protocol/openid-connect/3p-cookies/step1.html加载step1.html时,会发生错误。

现在我认为这个URL(初始部分https://auth.mydomain.com)不正确,但不知道如何配置它。我想它应该是 http 并指向内部 IP/localhost 或摆脱 8081 端口。

这是我的 nginx.conf:

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        http2  on;
        server_name auth.mydomain.com;

        # SSL certificate configuration
        ssl_certificate .../public.crt;
        ssl_certificate_key .../private.key;

        location / {
            proxy_pass http://127.0.0.1:8081;
            proxy_set_header Host $http_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;
        }
    }

这就是 Keycloak 的配置方式。

  environment:
      ...
      - KC_HTTP_ENABLED=true
      - KC_PROXY=edge
      - KC_PROXY_HEADERS=forwarded|xforwarded
      - KC_HOSTNAME_STRICT=false
      - KC_HOSTNAME_STRICT_HTTPS=false
      ...

nginx(镜像 nginx:1.25.3-alpine)和 Keycloak(quay.io/keycloak/keycloak:21.1.2)都作为 Docker 容器运行。 任何帮助表示赞赏,这越来越令人恼火。

nginx keycloak reverse-proxy
1个回答
0
投票

ngix 配置对我来说看起来不错。

您是否检查设置了 admin URL 变量

这些是我的 docker compose 变量(使用 localhost 而不是 IP):

  KEYCLOAK_ADMIN_URL: http://localhost:${NGINX_HOST_PORT}${KEYCLOAK_ADMIN_URL}
  KC_HOSTNAME_URL: http://localhost:${NGINX_HOST_PORT}${KEYCLOAK_HOSTNAME_URL}
  KC_HOSTNAME_ADMIN_URL: http://localhost:8081/
© www.soinside.com 2019 - 2024. All rights reserved.