在nginx入口控制器后启用tls时,keycloak停止工作。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在nginx入口控制器后启用tls时,keycloak停止工作。相关的知识,希望对你有一定的参考价值。

我需要建议如何在eks kubernetes上用TLS配置nginx ingress控制器和keycloak。

我的第一次尝试是让keycloak在没有TLS的情况下工作。这样做很好。但是当我在 ingress 定义中添加 TLS 时,keycloak 给出了一个 无效参数:redirect_uri 错误。

这是工作样本。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: keycloak-tls-test
  namespace: keycloak-tls-test
spec:
  rules:
  - host: keycloak.test.myhops.com
    http:
      paths:
      - backend:
          serviceName: keycloak
          servicePort: 80

当我添加tls部分时,我得到了上述的错误。见下面的yaml文件。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: keycloak-tls-test
  namespace: keycloak-tls-test
spec:
  tls:
  - hosts:
    - keycloak.test.myhops.com
    secretName: test-myhops-tls
  rules:
  - host: keycloak.test.myhops.com
    http:
      paths:
      - backend:
          serviceName: keycloak
          servicePort: 80

有什么建议可以解决这个问题吗?有一个网上的建议是添加 https:/keycloak.test.myhops.com。* 到主域中安全管理控制台客户端的有效重定向URL。这解决了无效的重定向_uri错误,但我只得到了空白页面。我在keycloak日志中找不到提示。

答案

我想明白了是什么导致了这个问题。似乎当keycloak在一个终止TLS的反向代理后面使用时,那么keycloak需要设置proxy-address-forwarding。对于docker容器来说,这意味着env var PROXY_ADDRESS_FORWARDING=true就可以了。所以Ingress是正确的,keycloak部署需要一个额外的环境变量。

请不要以为 ingress-nginx 已经设置了正确的头文件来工作。

  • X -Forwarded -For
  • X-Forwarded-Proto

Docker文档[钥匙斗篷文件2

以上是关于在nginx入口控制器后启用tls时,keycloak停止工作。的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes NGINX 入口控制器未获取 TLS 证书

具有多个入口资源对象的 Kubernetes nginx 入口控制器

如何禁用 nginx 入口控制器的自动 https 重定向?

如何在 Nginx 中启用 TLS 1.2?

net/http:使用 KOPS 的 TLS 握手超时

如何解决这个问题:“请确保在“Internet”选项控制面板中已启用SSL 3.0或TLS 1.0”???