use*_*468 2 nginx reverse-proxy single-sign-on mixed-content
在解压并启动 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; }
}
}
Run Code Online (Sandbox Code Playgroud)
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% 返回了 HTTP 400 2Fconsole%2F&state=5abb646f-d1c8-49ef-8ae1-9358bfc50d6d&response_mode=fragment&response_type=code&scope=openid&nonce=525b593c-07ab-4afa-8ca0-bd6449906
(希望它的起源有任何价值)
以前与此问题相关的问题仅建议添加 proxy_set_header 指令,这避免了您在访问 keycloaks 网页时看到的初始仪表板的空白屏幕,但对后一个提到的问题没有帮助。
如果我错过了一些微不足道的东西,请考虑到我对这个主题很陌生。
任何解决此行为的建议都非常感谢。
你的 nginx 配置看起来不错。我最近遇到了与您相同的问题,并且或多或少具有相同的 nginx 配置。
我唯一需要做的就是更新 keycloak 文件夹中的独立配置文件。您可以在keycloak_folder/standalone/configuration/standalone.xml.
在这里,您必须查找以下内容(+- 第 572 行):
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" />
...
</server>
Run Code Online (Sandbox Code Playgroud)
并添加proxy-address-forwarding=true这样的:
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" proxy-address-forwarding="true" />
...
</server>
Run Code Online (Sandbox Code Playgroud)
这将确保您的内部 keycloak jboss 服务器知道代理地址。
| 归档时间: |
|
| 查看次数: |
8112 次 |
| 最近记录: |