nginx - 使用 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;
}
<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
还有什么我想念的吗???
解决方案
推荐阅读
- c++ - 尝试将 C++11 代码转换为 C++03 时默认函数模板参数出错
- c# - 为什么当我使用 process.WaitForInputIdle 时进程总是不空闲?
- c# - 确认
声明是正确的,程序集及其所有依赖项都可用 - r - Is there a way to group_by a variable, str_detect in each group and store that result in a new column?
- reactjs - 如何处理 React-admin 中的服务器错误?
- excel - 创建字符串的变体数组(数字或字符串的混合数据)
- php - Jquery 和 Ajax 不将数据发布到或加载 PHP 页面
- arraylist - 在处理中将表行转换为数组列表
- php - PHP 我需要在 php 日期函数中做这个时间戳
- outlook - MAC 上的 Outlook Web 加载项,Office.context.mailbox.makeEwsRequestAsync 不起作用