Nginx
Keycloak 帳戶管理控制台不適用於 Nginx 反向代理
遇到一個奇怪的問題。我使用下面的配置啟動並執行了 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/
我遇到了完全相同的問題並且能夠解決它(見這裡,下面的快速描述):
- 確保您已
proxy-address-forwarding="true"
為 keycloak 伺服器的 HTTP 偵聽器配置設置了值。- 確保還包含更多代理標頭配置。我有以下內容:
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;
- 我還添加
proxy=edge
了屬性文件,但我不確定這是否有幫助。檢查一切是否正常:
- 通過導航到
http(s)://YOUR_PROXY_SERVER/auth/realms/master/.well-known/openid-configuration
(JSON 文件)檢查端點配置並驗證端點路徑- 使用錯誤的憑據登錄到管理控制台並查找伺服器日誌——它們應該包含錯誤登錄的條目。確保該條目中的 IP 地址是您用於連接反向代理的客戶端的 IP,而不是反向代理 IP 地址。
來源:https ://www.keycloak.org/docs/latest/server_installation/#_setting-up-a-load-balancer-or-proxy