I can't connect to my oauth2-proxy
service. This is the error I'm getting:
2023-09-30T14:39:13Z DBG github.com/traefik/traefik/v3/pkg/middlewares/auth/forward.go:122 > Error calling http://oauth2-proxy:4180. Cause: Get "http://oauth2-proxy:4180": dial tcp 192.168.128.7:4180: connect: connection refused middlewareName=oauth2-proxy@docker middlewareType=ForwardedAuthType
Here is my docker-compose.yml
:
version: '3'
services:
upload:
image: mydomain-upload:v3-staging
build:
context: .
dockerfile: src/services/upload/Dockerfile.upload
restart: always
ports:
- "8004:8004"
depends_on:
- oauth2-proxy
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.upload.rule=(Host(`mydomain.com`) || Host(`www.mydomain.com`)) && PathPrefix(`/v3/upload`)"
- "traefik.http.middlewares.oauth2-proxy.forwardauth.address=http://oauth2-proxy:4180"
- "traefik.http.middlewares.oauth2-proxy.forwardauth.trustForwardHeader=true"
- "traefik.http.routers.upload.entrypoints=websecure"
- "traefik.http.services.upload.loadbalancer.server.port=8004"
- "traefik.http.middlewares.upload-cors.headers.accesscontrolallowmethods=GET,POST,OPTIONS"
- "traefik.http.middlewares.upload-cors.headers.accesscontrolalloworiginlist=https://mydomain.com,https://www.mydomain.com"
- "traefik.http.middlewares.upload-cors.headers.accesscontrolallowheaders=*"
- "traefik.http.middlewares.upload-cors.headers.accesscontrolallowcredentials=true"
- "traefik.http.middlewares.upload-cors.headers.addvaryheader=true"
- "traefik.http.routers.upload.middlewares=upload-cors,oauth2-proxy"
environment:
- MODE=staging
oauth2-proxy:
image: quay.io/oauth2-proxy/oauth2-proxy:v7.4.0
ports:
- 4180:4180
networks:
- proxy
volumes:
- /var/log:/var/log
command:
- --provider=oidc
- --email-domain=*
- --oidc-issuer-url=https://accounts.google.com
- --cookie-secure=true
- --cookie-secret=${OAUTH2_PROXY_COOKIE_SECRET}
- --client-id=${OAUTH2_PROXY_CLIENT_ID}
- --client-secret=${OAUTH2_PROXY_CLIENT_SECRET}
- --upstream=http://traefik:80
- --pass-access-token=true
- --pass-authorization-header=true
- --set-authorization-header=true
- --redirect-url=https://www.mydomain.com/oauth2/redirect
labels:
- "traefik.enable=true"
- "traefik.http.routers.oauth2-proxy.rule=(Host(`mydomain.com`) || Host(`www.mydomain.com`))"
- "traefik.http.routers.oauth2-proxy.entrypoints=websecure"
- "traefik.http.routers.oauth2-proxy.tls.certresolver=myresolver"
nginx:
image: mydomain-nginx:v3-staging
build:
context: .
dockerfile: src/static/Dockerfile.nginx.staging
restart: always
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=(Host(`mydomain.com`) || Host(`www.mydomain.com`)) && PathPrefix(`/`) && !PathPrefix(`/v3`)"
- "traefik.http.routers.nginx.entrypoints=websecure"
- "traefik.http.routers.nginx.tls.certresolver=myresolver"
traefik:
image: traefik:v3.0
restart: always
depends_on:
- oauth2-proxy
- nginx
ports:
- "80:80"
- "443:443"
networks:
- proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/letsencrypt:/letsencrypt
- /var/log:/var/log
command:
- --providers.docker.network=proxy
- --api.dashboard=true
- --log.level=DEBUG
- --log.filepath=/var/log/traefik.log
- --accesslog=true
- --accesslog.filepath=/var/log/traefik-access.log
- --providers.docker.network=proxy
- --providers.docker.exposedByDefault=false
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entryPoints.web.http.redirections.entrypoint.scheme=https
- --entrypoints.websecure.address=:443
- --entrypoints.websecure.asDefault=true
- --entrypoints.websecure.http.tls.certresolver=myresolver
- --certificatesresolvers.myresolver.acme.email=admin@mydomain.com
- --certificatesresolvers.myresolver.acme.tlschallenge=true
- --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.myresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory
labels:
- "traefik.enable=true"
- "traefik.http.routers.myrouter.tls.domains[0].main=www.mydomain.com"
- "traefik.http.routers.myrouter.tls.certresolver=myresolver"
- "traefik.http.routers.mydashboard.rule=Host(`monitor.mydomain.com`)"
- "traefik.http.routers.mydashboard.entrypoints=websecure"
- "traefik.http.routers.mydashboard.tls.certresolver=myresolver"
- "traefik.http.routers.mydashboard.service=api@internal"
- "traefik.http.routers.mydashboard.middlewares=myauth"
- "traefik.http.middlewares.myauth.basicauth.users=admin:$$2y$$05$$/hJpV/MlsvaKB9bAWe8nDeq416TAjd9qU4bfs56ibkFU9smKP/O0S"
networks:
proxy:
name: proxy
I tried a few things:
- Setting
entrypoints=web
label in oauth2-proxy service and usingforwardauth.address=http://oauth2-proxy:4180
in the upload service and also usingwebsecure
andhttps
instead, but both scenarios failed. - oauth2-proxy is running and 4180 is exposed according to
docker ps
. - I checked the
client-id
andclient-secret
match with what's in my GCP.
@bluepuma77 was wondering if you could help me again with an issue.