如何正确地将NGINX配置为keydove前面的代理?
询问
这是专门处理keydove位于反向代理后面的情况,例如nginx和nginx终止SSL并推送到keydove。这与keydape Invalid parameter:redirect_uri的问题不同,尽管它会产生相同的错误消息。
我也有同样的问题,因为我重用/复制粘贴了另一个服务的代理配置。
一旦我改变了proxy\u set\u头主机$Host:$server\u端口
到代理集头主机$Host
成功了。
(已删除:$server\u端口)
上面的答案涉及对代理所做的配置。
在keydepot容器的哪些方面,如果您在尝试登录到管理控制台时遇到redirect_uri错误,则必须为keydepot(从版本10.0.2开始)设置两个环境变量,以便在反向代理之后工作。
如果管理控制台的URL为https://your.fqdn/auth然后必须设置:
KEYCLOAK_FRONTEND_URL = https://your.fqdn/auth
除上述各项外:
PROXY_ADDRESS_FORWARDING = true
下面是一个最小的docker组合。yml将在一个反向代理后启动KeyClope 10,该代理将请求转发给https://your.fqdn进入docker主机的端口8000。根据您的意愿,启动时只需在环境(或.env文件)中设置变量keydove\u ADMIN\u PWD
和PG\u KC\u PASS
。
version: '3'
volumes:
pgkeycloak-data:
services:
pg-keycloak:
image: "postgres:12-alpine"
container_name: pg-keycloak
volumes:
- "pgkeycloak-data:/var/lib/postgresql/data"
restart: always
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloakdb
POSTGRES_PASSWORD: ${PG_KC_PASS}
auth:
user: root
privileged: true
image: "quay.io/keycloak/keycloak:10.0.2"
depends_on:
- "pg-keycloak"
restart: always
ports:
- 8000:443
command:
-Djboss.http.port=443
-Djboss.bind.address=0.0.0.0
environment:
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: ${KEYCLOAK_ADMIN_PWD}
KEYCLOAK_FRONTEND_URL: https://your.fqdn/auth
PROXY_ADDRESS_FORWARDING: "true"
DB_USER: keycloakdb
DB_PASSWORD: ${PG_KC_PASS}
DB_ADDR: pg-keycloak
DB_VENDOR: postgres
这方面的关键在于https://www.keycloak.org/docs/latest/server_installation/index.html#identifying-客户端ip地址
必须设置代理地址转发
,以及各种X-
标题。
如果您使用的是来自的Docker图像https://hub.docker.com/r/jboss/keycloak/然后设置环境。arg
-e PROXY\u ADDRESS\u FORWARDING=true
。
server {
server_name api.domain.com;
location /auth {
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-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
}
location / {
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-Forwarded-Proto $scheme;
proxy_pass http://localhost:8081;
proxy_read_timeout 90;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/api.domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api.domain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = api.domain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name api.domain.com;
listen 80;
return 404; # managed by Certbot
}
如果您使用的是另一个代理,则其中重要的部分是要设置的标题:
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-Forwarded-Proto $scheme;
Apache、ISTIO和其他人都有自己的设置方法。
[Edit-1]在oauth2配置中添加作用域,添加grafana服务,删除 : 我访问了Grafana,请求被路由到Keyclope 我已经搜索并尝试了一些建议,但它们对我不起作用。希望你们能帮忙。我真的很感激。 这是我的docker swarm配置:
我有一个运行在Minikube中的应用程序,它可以像预期的那样与入口网关一起工作。调用spring boot应用程序,显示视图,并通过链接调用受保护的资源。呼叫被转发到Key斗篷,并通过登录掩码进行授权,受保护的资源按预期显示。 使用Istio时,重定向失败,并显示消息:“无效参数:重定向\u uri”。 我的Istio网关配置 我的虚拟服务配置 点击受保护的链接后,我在浏览器中得到以下URI:
我正在使用keydepot身份验证对angular应用程序进行身份验证,到目前为止,我已成功将登录重定向到keydeport服务器。但当重定向而不是登录页面时,我会收到一个500错误页面,其中包含消息
我有一个RestHighLevelClient连接到一个远程elasticDB,它位于一个反向代理后面,该代理剥离了ssl。 当我打电话的时候 我得到一个握手失败的例外 正如这里和这里所描述的,我检查了日志,发现了ClientHello 服务员:你好 客户端和服务器都同意密码套件TLS_ECDHE_RSA_和_AES_128_GCM_SHA256 然后以加密和纯文本的形式跟踪请求。然后是另一个Cl
什么是反向代理 反向代理(Reverse Proxy)方式是指用代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 举个例子,一个用户访问 http://www.example.com/readme,但是 www.example.com 上并不存在
反向代理是一个 V2Ray 的附加功能,可以把服务器端的流量向客户端转发,即逆向流量转发。 反向代理功能在 V2Ray 4.0+ 可用。目前处于测试阶段,可能会有一些问题。 反向代理的大致工作原理如下: 假设在主机 A 中有一个网页服务器,这台主机没有公网 IP,无法在公网上直接访问。另有一台主机 B,它可以由公网访问。现在我们需要把 B 作为入口,把流量从 B 转发到 A。 在主机 A 中配置一