首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义基URL为Keycloak停靠器配置反向代理

使用自定义基URL为Keycloak停靠器配置反向代理
EN

Stack Overflow用户
提问于 2017-06-19 07:43:07
回答 6查看 47.9K关注 0票数 42

如何将docker keycloak base url设置为参数?

我有以下nginx反向代理配置:

代码语言:javascript
运行
复制
server {
    listen 80;
    server_name example.com;

    location /keycloak {
        proxy_pass http://example.com:8087/;
    }
}

当我尝试访问http://example.com/keycloak/时,我得到了一个密匙斗篷http重定向到http://example.com/auth/而不是http://example.com/keycloak/auth/

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-06-19 09:53:52

刚刚测试了@home,实际上需要添加多个配置:

1/如docs中所解释的那样,使用env -e PROXY_ADDRESS_FORWARDING=true运行keycloak容器,这是访问keycloak的代理方式所必需的:

代码语言:javascript
运行
复制
docker run -it --rm -p 8087:8080 --name keycloak -e PROXY_ADDRESS_FORWARDING=true jboss/keycloak:latest

在这个所以问题中也解释了

2/更改密钥披风配置文件中的web上下文 $JBOSS_HOME/standalone/configuration/standalone.xml

默认的密钥披风配置点到auth

代码语言:javascript
运行
复制
<web-context>auth</web-context>

然后您可以将其更改为keycloak/auth

代码语言:javascript
运行
复制
<web-context>keycloak/auth</web-context>

如果您需要自动完成对接,只需创建一个新的keycloak映像:

代码语言:javascript
运行
复制
FROM jboss/keycloak:latest

USER jboss

RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/standalone/configuration/standalone.xml

3/向nginx配置中添加一些代理信息(主要用于http / https处理)

代码语言:javascript
运行
复制
location /keycloak {
    proxy_pass http://example.com:8087;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

如果您在同一台服务器上代理从nginx到keycloak的请求,我建议使用proxy_pass http://localhost:8087;,如果不使用专用网络,则避免通过外部web请求进行代理。

希望这能有所帮助

票数 60
EN

Stack Overflow用户

发布于 2019-05-16 14:41:54

/keycloak重定向到/keycloak/auth不起作用。index.htmlBase-URL中的重定向路由缺少/keycloak部分。我不得不补充一下:

代码语言:javascript
运行
复制
FROM jboss/keycloak:latest

USER jboss

RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/standalone/configuration/standalone.xml
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml
RUN sed -i -e 's/name="\/"/name="\/keycloak\/"/' $JBOSS_HOME/standalone/configuration/standalone.xml
RUN sed -i -e 's/name="\/"/name="\/keycloak\/"/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml
RUN sed -i -e 's/\/auth/\/keycloak\/auth/' $JBOSS_HOME/welcome-content/index.html
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/domain/configuration/domain.xml
票数 18
EN

Stack Overflow用户

发布于 2019-01-22 15:40:13

基于@Francois的回答:对于最新的Keycloak (目前为4.8.x),我还必须添加一行来替换standalone-ha.xml中的standalone-ha.xml

代码语言:javascript
运行
复制
FROM jboss/keycloak:latest
USER jboss
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
RUN sed -i -e 's/\/auth/\/keycloak\/auth/' /opt/jboss/keycloak/welcome-content/index.html

原因是除非传递了docker-entrypoint.sh标志,否则standalone-ha.xml启动脚本将使用standalone.xml之外的-c配置。见此处:https://github.com/jboss-dockerfiles/keycloak/blob/master/server/tools/docker-entrypoint.sh

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44624844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档