簡體   English   中英

啟用 nginx 入口 controller 后面的 tls 時,keycloak 停止工作

[英]keycloak stops working when enabling tls behind nginx ingress controller

我需要有關如何在 eks kubernetes 上使用 TLS 配置 nginx 入口 controller 和 keycloak 的建議。

我的第一次嘗試是讓 keycloak 在沒有 TLS 的情況下工作。 這工作正常。 但是當我將 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/ * 添加到主 ZB94B7EF7F17D2394D6FBDF45 中的安全管理控制台客戶端的有效重定向 URL 中。 這解決了無效的 redirect_uri 錯誤,但后來我只有空白頁。 我在 keycloak 日志中找不到提示。

我弄清楚是什么導致了這個問題。 似乎當在終止 TLS 的反向代理后面使用 keycloak 時,keycloak 需要設置代理地址轉發。 對於 docker 容器,這意味着環境變量 PROXY_ADDRESS_FORWARDING=true 可以解決問題。 所以 Ingress 是正確的,keycloak 部署需要一個額外的環境變量。

請注意,ingress-nginx 已經為此設置了正確的標頭:

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

Docker 文檔[keycloak 文檔2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM