代理从 nginx 容器传递到 keycloak 容器时获取 502 Bad gateway
Posted
技术标签:
【中文标题】代理从 nginx 容器传递到 keycloak 容器时获取 502 Bad gateway【英文标题】:Getting 502 Bad gateway when proxy pass to keycloak container from nginx container 【发布时间】:2021-12-30 01:50:31 【问题描述】:所以我对 docker 世界非常陌生。目前在尝试将代理传递到 keycloak 容器时遇到此“502 Bad Gateway”错误。我似乎无法理解错误的原因。以下是我编写的代码:
proxy.conf
文件
server
listen 80;
location /
proxy_pass http://myapp;
Dockerfile
FROM nginx:alpine
RUN rm etc/nginx/conf.d/*
COPY proxy.conf etc/nginx/conf.d/
码头工人撰写文件
version: '3'
services:
nginx_app:
build: .
container_name: nginxapp
ports:
- "9000:80"
depends_on:
- myapp
myapp:
image: jboss/keycloak:latest
container_name: myapp
ports:
- "8443"
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
我想要做的是,当我点击host-ip:9000
时,它应该将它传递给 keycloak 屏幕。但好像有什么不对。感谢任何帮助。谢谢
【问题讨论】:
这能回答你的问题吗? Reverse proxy configuration for keycloak (Nginx) 试过了,但目前还没有 【参考方案1】:您需要确保您的端口“接线”设置正确。 JBoss(目前运行 Keycloak 的容器平台)通常在 8080 上侦听 HTTP,在 8443 上侦听 HTTPS。
在您的配置中,您可以使用proxy_pass http://myapp;
将其路由到端口 80,因为这是 HTTP 默认使用的。
我建议将它指向 HTTPS 端点(或者如果你真的需要,你可以在端口 8080 上使用 HTTP),如下所示:
server
listen 80;
location /
proxy_pass https://myapp:8443;
我们还需要添加两个额外的环境变量,keycloak 图像使用这些变量来使代理后面的工作更顺利。看这里for more details on these image env vars
PROXY_ADDRESS_FORWARDING
由 Jan Garaj 链接
KEYCLOAK_FRONTEND_URL
myapp:
image: jboss/keycloak:latest
container_name: myapp
ports:
- "8443"
environment:
- KEYCLOAK_FRONTEND_URL=http://localhost:9000/auth/
- PROXY_ADDRESS_FORWARDING=true
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
一旦一切启动,您应该能够通过 http://localhost:9000/auth/admin/ 访问 keycloak 管理控制台
如果这不仅仅用于开发/测试设置,您还应该在 nginx 中配置 TLS,甚至可能为“后端”keycloak 服务器提供真正的证书。
【讨论】:
以上是关于代理从 nginx 容器传递到 keycloak 容器时获取 502 Bad gateway的主要内容,如果未能解决你的问题,请参考以下文章
nginx登录背后的keycloak失败,帖子中缺少端口号等
如何在 keycloak 和 nginx 上配置 cors?