工作设置
我有一个配置
- 具有公共 IP 且配备 Nginx 反向代理的外部 VPS(A)
- 使用 Nginx 的内部服务器(B)
- 独立应用程序(非容器化)Keycloak 17.0.1
看起来像这样。我为该服务器注册了一个域名,(假设)auth.example.com
当我去https://auth.example.com我可以看到带有指向管理控制台的链接的常规 keycloak 页面。
通过单击管理控制台,我可以正确登录来管理主领域。
问题
一旦我将 keycloak 容器化,管理控制台的所有链接和一些脚本就不再起作用,因为它们已从更改https://auth.example.com
为https://localhost
配置
通过容器化 keycloak 我没有修改任何 nginx 配置。
Nginx 一个
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-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://[nginx b ip];
}
Nginx 的 B 类
server
{
server_name auth.example.com;
location /
{
proxy_pass http://localhost:[exposed docker port];
}
listen 80;
}
独立 keycloak(工作命令)
/usr/bin/bash bin/kc.sh start --proxy edge --hostname=auth.example.com --db-url-host localhost --db-username keycloak --db-password password
Docker 化的 keycloak (docker-compose)
keycloak:
image: quay.io/keycloak/keycloak:latest
command: start --auto-build --features=token-exchange --hostname-strict-backchannel=true --hostname=auth.example.com
depends_on:
- db
environment:
KC_METRICS_ENABLED: "true"
DB_VENDOR: [somedbvendor]
DB_ADDR: db
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: password
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_PROXY: edge
PROXY_ADDRESS_FORWARDING: "true"
ports:
- "8081:8080"
networks:
- net
我想将我拥有的整个应用程序及其依赖项容器化,而keycloak是我无法完成的第一步。