在解压并启动 keycloak 以侦听 127.0.0.1 后,我将 nginx 配置为可通过 https 从公开可用域访问的反向代理。
这是 nginx 配置:
http
{
server_tokens off;
upstream keycloak { ip_hash; server 127.0.0.1:8080; }
server
{
server_name name.domain.tld;
listen 443 ssl http2; # managed by Certbot
ssl_certificate /path/to/cert; # managed by Certbot
ssl_certificate_key /path/to/key; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
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;
add_header Access-Control-Allow-Origin *;
proxy_pass http://keycloak;
}
}
server
{
server_name name.domain.tld;
listen 80;
location / { return 301 https://$server_name; }
}
}
keycloak 目录中的任何文件都没有任何更改。
Keycloak 是可访问的,但是当导航到登录页面时,由于来自“/auth/js/keycloak.js?version=df45z”的混合内容 javascript,我遇到了一个空白页面。
这可以通过禁用浏览器对混合内容的保护来暂时解决,但是这将使我进入功能失调的登录页面,并给出以下错误消息:“我们很抱歉...无效参数:redirect_uri”。
此外,从“/auth/realms/master/protocol/openid-connect/auth?client_id=security-admin-console&redirect_uri=https%3A%2F%2Fname.domain.tld%2Fauth%2Fadmin%2Fmaster% 2Fconsole%2F&state=5abb646f-d1c8-49ef-8ae1-9358bfc50d6d&response_mode=fragment&response_type=code&scope=openid&nonce=525b593c-07ab-4afa-8ca0-bd64499061eb"。
(希望它的起源有任何价值)
与此问题相关的先前问题仅建议添加 proxy_set_header 指令,这避免了您在访问 keycloaks 网页时看到的初始仪表板的空白屏幕,但对后者提到的问题没有帮助。
如果我错过了一些琐碎的事情,请考虑到我对这个主题很陌生。
非常感谢任何解决此行为的建议。
您的 Nginx 配置看起来不错。我最近遇到了与您相同的问题,并且 Nginx 配置或多或少相同。
我唯一需要做的就是更新 KeyCloak 文件夹中的独立配置文件。您可以在
keycloak_folder/standalone/configuration/standalone.xml
.在这里,您必须查找以下内容(+- 第 572 行):
并添加
proxy-address-forwarding=true
这样的:这将确保您的内部 KeyCloak JBoss 服务器知道代理地址。
Keycloak 接受
PROXY_ADDRESS_FORWARDING
env 放置在standalone.xml
PROXY_ADDRESS_FORWARDING
使用 docker -e 或 docker-composeenvironment
部分提供给 docker除了 Thorchy 写道:
我在 nginx 上启用了 http_auth。从配置中删除 nginx 后,我错过了重新启动它。
通过重启nginx禁用http_auth终于解决了问题。