Nginx

Keycloak 帳戶管理控制台不適用於 Nginx 反向代理

  • June 6, 2021

遇到一個奇怪的問題。我使用下面的配置啟動並執行了 Keycloak,管理控制台執行良好。

不幸的是,當我嘗試訪問“帳戶”客戶端(帳戶管理控制台,例如通過從使用者列表中選擇“模擬”)時,我會彈出 Keycloak 無法載入和無限載入微調器的彈出視窗。Firefox 的開發工具告訴我這是由於 403 錯誤。

如果我通過不使用 SSL(並且不使用 Nginx)訪問它來測試它,那麼一切正常。這是我正在使用的配置:

server {
   listen 80;
   server_name keycloak.domain.org;
   return 301 https://$host$request_uri;
}

server {
   listen 443 ssl;
   server_name keycloak.domain.org;

   ssl_certificate /etc/letsencrypt/live/keycloak.domain.org/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/keycloak.domain.org/privkey.pem;

   location /auth {
       proxy_pass http://localhost:8080;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header X-Forwarded-Proto https;
       proxy_set_header Host $host;
       proxy_buffers 4 16k;
   }
}

我正在使用這個命令啟動 Keycloak(我的下一個任務是配置它以使用 Postgres):

docker run -d -p 8080:8080 \
       -e KEYCLOAK_USER=admin\
       -e KEYCLOAK_PASSWORD=admin\
       -e PROXY_ADDRESSFORWARDING=true\
       -t quay.io/keycloak/keycloak:12.0.4\
               -b 0.0.0.0 \
               -Dkeycloak.frontendUrl=https://keycloak.domain.org/auth/

我遇到了完全相同的問題並且能夠解決它(見這裡,下面的快速描述):

  1. 確保您已proxy-address-forwarding="true"為 keycloak 伺服器的 HTTP 偵聽器配置設置了值。
  2. 確保還包含更多代理標頭配置。我有以下內容:
   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;
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-Port $server_port;
  1. 我還添加proxy=edge了屬性文件,但我不確定這是否有幫助。

檢查一切是否正常:

  1. 通過導航到http(s)://YOUR_PROXY_SERVER/auth/realms/master/.well-known/openid-configuration(JSON 文件)檢查端點配置並驗證端點路徑
  2. 使用錯誤的憑據登錄到管理控制台並查找伺服器日誌——它們應該包含錯誤登錄的條目。確保該條目中的 IP 地址是您用於連接反向代理的客戶端的 IP,而不是反向代理 IP 地址。

來源:https ://www.keycloak.org/docs/latest/server_installation/#_setting-up-a-load-balancer-or-proxy

引用自:https://unix.stackexchange.com/questions/647610