oauth2-proxy本地Docker Compose部署转发上游服务提示Connection refused求助
问题根因
- 本次连接拒绝错误由Docker容器网络寻址错误导致:
localhost在容器网络命名空间内指向容器自身的回环地址,而非宿主机或同网络下的其他服务。你在oauth2-proxy配置中填写的上游地址http://localhost:4440,实际是尝试访问oauth2-proxy容器自身的4440端口,该端口在oauth2-proxy容器内没有服务监听,因此抛出连接拒绝错误。 - 你在宿主机能正常访问
http://localhost:4440,是因为你在docker-compose中配置了whoami服务的端口映射,将whoami容器的80端口映射到了宿主机的4440端口,该映射仅对宿主机网络生效,对容器内部网络不生效。 - 额外配置笔误:你填写的
OAUTH2_PROXY_COOKIE_DOMAINN参数多了一个末尾的N,属于拼写错误,虽不直接导致本次连接问题,但会导致cookie配置不生效,建议同步修正。
解决方案
修改docker-compose中oauth2-proxy的环境变量配置如下:
- 将上游地址改为同docker网络下的服务名寻址,whoami服务在容器内部监听的端口为80,因此
OAUTH2_PROXY_UPSTREAMS修改为http://whoami:80 - 修正cookie domain参数拼写,同时cookie domain仅需要填写域名不需要带协议和端口,改为
OAUTH2_PROXY_COOKIE_DOMAIN: "localhost"
修改后的配置片段参考:
environment: OAUTH2_PROXY_PROVIDER: keycloak-oidc OAUTH2_PROXY_CLIENT_ID: changeme OAUTH2_PROXY_CLIENT_SECRET: changeme OAUTH2_PROXY_OIDC_ISSUER_URL: https://<keycloak-host>/auth/realms/operations OAUTH2_PROXY_UPSTREAMS: "http://whoami:80" OAUTH2_PROXY_COOKIE_SECRET: q_6A1CtSYFi-GK9crHCKszRxQ2g9op7-DZ6ShUbzoyc= OAUTH2_PROXY_COOKIE_DOMAIN: "localhost" OAUTH2_PROXY_EMAIL_DOMAINS: "*" OAUTH2_PROXY_SSL_UPSTREAM_INSECURE_SKIP_VERIFY: "true" OAUTH2_PROXY_SSL_INSECURE_SKIP_VERIFY: "true" OAUTH2_PROXY_ERRORS_TO_INFO_LOG: "true" OAUTH2_PROXY_REDIRECT_URL: "http://localhost:4180/oauth2/callback" OAUTH2_PROXY_HTTP_ADDRESS: http://:4180
修改后重新启动服务即可正常转发请求。
内容的提问来源于stack exchange,提问作者Marian
相关产品推荐
相关产品推荐

