【问题标题】:Reverse proxy configuration for keycloak (Nginx)keycloak (Nginx) 的反向代理配置
【发布时间】:2017-12-01 15:55:14
【问题描述】:

我有一个 Spring Boot 应用程序(带有 keycloak 适配器)在端口 8000 上运行,keycloak 在 8080 上运行

我已经编辑了我的 /etc/hosts 文件,以将来自我的测试域 (foo.bar.com) 的请求路由到 127.0.0.1

目前我对 SSL 不感兴趣。

我的示例 nginx 配置:

server {
    listen       80;
    server_name  foo.bar.com;

   location /myapp {
        proxy_set_header        Host               $host/myapp;
        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   80;
        proxy_set_header        X-Forwarded-Proto  http;

        proxy_pass              http://localhost:8000/;
    }

   location /auth {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Server $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-Proto $scheme;

        proxy_pass              http://localhost:8080;
    }
}

问题:

这个示例 nginx conf 是否足够?我发生了一些无限重定向。我的spring应用程序中keycloak适配器的日志说: 无状态 Cookie

如果我不使用代理服务器,而是配置应用程序和 keycloak 直接相互对话,它就可以工作。我想知道为什么代理服务器会产生问题。

【问题讨论】:

  • 由于我只有一个域,我不得不依靠位置模式将流量路由到我的应用程序和 keycloak。当 Host 标头设置为 $host 时,较早的 Keycloak 无法正确重定向。然后我将其更改为 $host/myapp 以使其正常工作。但这会导致在应用程序和 keycloak 之间进行无休止的重定向。我找不到任何解决方案来解决它。我只是想出了解决方法,即为 keycloak 和 app 设置两个单独的子域。这很顺利
  • 所以它现在可以使用上面的配置了吗?
  • 从技术上讲,这是一种解决方法,而不是解决方案。

标签: nginx spring-boot keycloak jboss-tools


【解决方案1】:

您是否配置了 Keycloak 以便它知道它在代理后面?

例如对于 docker,这是选项-e PROXY_ADDRESS_FORWARDING=true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2020-08-06
    相关资源
    最近更新 更多