如何为Nginx反向代理后的Keycloak启用HTTPS
配置Keycloak + Nginx启用HTTPS方案
HTTPS的处理完全交给Nginx即可,Keycloak只需要做少量配置来识别反向代理的HTTPS请求,具体步骤如下:
1. 修改Nginx配置
新增HTTPS监听规则,并把所有HTTP请求重定向到HTTPS,替换以下配置中的SSL证书路径为你已有的证书文件路径:
# 重定向HTTP到HTTPS server { listen 80; server_name docsbot.agency; return 301 https://$host$request_uri; } # HTTPS服务配置 server { listen 443 ssl; server_name docsbot.agency; # 替换为你的SSL证书路径 ssl_certificate /path/to/your/docsbot.agency.crt; ssl_certificate_key /path/to/your/docsbot.agency.key; # 可选:添加SSL优化配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 明确设置为https,让Keycloak识别外部请求协议 proxy_set_header X-Forwarded-Proto https; } }
修改完成后,重启Nginx使配置生效:
sudo nginx -s reload
2. 调整Keycloak启动命令
需要添加环境变量告诉Keycloak它运行在反向代理之后,且外部访问使用HTTPS,修改后的启动命令如下:
sudo docker run -d -p 8000:8080 \ -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \ -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \ -e KC_PROXY=edge \ -e KC_HOSTNAME=docsbot.agency \ -e KC_HOSTNAME_PORT=443 \ -e KC_HOSTNAME_STRICT_HTTPS=true \ quay.io/keycloak/keycloak:26.0.7 start-dev
KC_PROXY=edge:让Keycloak信任反向代理发送的X-Forwarded-*头信息KC_HOSTNAME和KC_HOSTNAME_PORT:指定外部访问的域名和端口KC_HOSTNAME_STRICT_HTTPS=true:强制Keycloak生成HTTPS格式的内部链接
3. 验证配置
重启Keycloak容器后,访问https://docsbot.agency,应该能正常进入Keycloak管理界面,且浏览器地址栏显示安全的HTTPS标识。
内容的提问来源于stack exchange,提问作者Joker-11011
相关产品推荐
相关产品推荐

