前言
问题说明:keycloak 需要https才能进行访问,所以打算采用 nginx做为入口,代理至keycloak应用,代理之后发现keycloak页面,有一个js加载不出来,请求失败404,请求地址为127.0.0.1,其它js都是https域名请求的,只有一个文件请求失败,问题原因就在于这个文件的请求地址不应该是127.0.0.1,具体如何解决,下面给出代码
环境说明
keycloak 采用docker部署启动,并连接数据库
安装nginx,采用nginx https入口。代理至keycloak服务
问题处理
要解决上述js文件加载失败的问题,分为两步
- docker 容器启动添加参数
PROXY_ADDRESS_FORWARDING=true
贴上docker 运行完整命令:
注意点说明
1.容器内部的8080端口不可改变
2.-e PROXY_ADDRESS_FORWARDING=true 代理地址转发,解决js加载失败问题
3.把数据库参数值换成自己就可以
4. 最后一个参数为,镜像id
docker run --name keycloak -d -p 8011:8080 -e KEYCLOAK_USER=call-admin -e KEYCLOAK_PASSWORD=1436033645 -e DB_VENDOR=MYSQL -e DB_ADDR=bj-cdb.sql.tencentcdb.com -e DB_PORT=6001 -e DB_DATABASE=xa_keycloak -e DB_USER=root -e DB_PASSWORD=mWHPrYcul* -e JDBC_PARAMS='useSSL=false' -e TZ=Asia/Shanghai -e LANG=zh_CN.GB2312 -e PROXY_ADDRESS_FORWARDING=true -v /etc/localtime:/etc/localtime --privileged=true --restart=always 388cf6d16996
2.nginx 添加配置
proxy_set_header X-Forwarded-Proto https;
完整配置
location / {
proxy_pass http://127.0.0.1:8011;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
client_max_body_size 1024m;
}
注意!!!
proxy_set_header X-Forwarded-Proto https; 这个配置在其它正常代理的location 中不要配置,否则会出现nginx 访问502错误,笔者亲测!切记!!!不要随便加这个参数