如何解决使用 Nginx 的 Keycloak 重定向 url 将转到 http 而不是 https |在stackoverflow上尝试了多种解决方案
我一直在尝试在 nginx 服务器后面设置 keycloak,但是在通过 keycloak 对任何应用程序进行身份验证时遇到了问题。重定向 uri 始终是 http 而不是 https。当我在客户端设置的重定向 uri 中设置 http 而不是 https 时,一切都像魅力一样。
我已经尝试过的解决方案。
- 在 nginx 配置中添加几行
location / {
proxy_pass http://keycloak:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
}
- 根据 https://www.keycloak.org/docs/latest/server_installation/index.html#enable-https-ssl-with-a-reverse-proxy 编辑 standalone.xml
<subsystem xmlns="urn:jboss:domain:undertow:11.0">
...
<http-listener name="default" socket-binding="http"
proxy-address-forwarding="true" redirect-socket="proxy-https"/>
...
</subsystem>
<socket-binding-group name="standard-sockets" default-interface="public"
port-offset="${jboss.socket.binding.port-offset:0}">
...
<socket-binding name="proxy-https" port="443"/>
...
</socket-binding-group>
- 我当前的
docker-compose.yml
文件看起来像这样
version: '3.6'
services:
keycloak:
image: jboss/keycloak:12.0.4
volumes:
- ./standalone.xml:/opt/jboss/keycloak/standalone/configuration/standalone.xml
environment:
- DB_VENDOR=POSTGRES
- DB_ADDR=<db_addr>
- DB_PORT=<db_port>
- DB_DATABASE=keycloak
- DB_USER=keycloak
- DB_SCHEMA=public
- DB_PASSWORD=<db_password>
- KEYCLOAK_USER=<username>
- KEYCLOAK_PASSWORD=<password>
- PROXY_ADDRESS_FORWARDING=true
## I am using nginx:1.19-alpine and installing certbot + copying nginx.conf
proxy:
build:
context: .
dockerfile: Dockerfile
restart: always
depends_on:
- keycloak
ports:
- 80:80
- 443:443
还有什么我遗漏的吗???
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。