Unable to handle 401 (BasicAuth) or 403 (IpWhitelist) errors with ErrorPage

Hello guys,

I tried to handle 401 or 403 errors from my middleware to display a custom error page.
My service for the custom pages works well. (ex: http://domain.com/not-exists will return my custom 404 page).

But, when I add a middleware for BasicAuth or IpWhitelist or both, I got the default error (401 Unauthorized or Forbidden).

I followed this guide and here to perform the nginx error pages server.

My version of Traefik is 2.5.5 running in a Docker Swarm.

My error page nginx service

nginx-errors-pages:
    image: nginx:latest
    volumes:
      - ./traefik-errors-pages/html:/usr/share/nginx/html
      - ./traefik-errors-pages/nginx/default.conf:/etc/nginx/conf.d/default.conf
    networks:
      - traefik
    deploy:
      placement:
        constraints:
          - "node.role == worker"
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.error-router.rule=HostRegexp(`{host:.+}`)"
        - "traefik.http.routers.error-router.priority=1"
        - "traefik.http.routers.error-router.entrypoints=web"
        - "traefik.http.routers.error-router.middlewares=error-pages-ratelimit,error-pages-middleware"
        - "traefik.http.middlewares.error-pages-middleware.errors.status=400-599"
        - "traefik.http.middlewares.error-pages-middleware.errors.service=error-pages-service"
        - "traefik.http.middlewares.error-pages-middleware.errors.query=/{status}.html"
        - "traefik.http.middlewares.error-pages-ratelimit.ratelimit.average=100"
        - "traefik.http.middlewares.error-pages-ratelimit.ratelimit.burst=50"
        - "traefik.http.services.error-pages-service.loadbalancer.server.port=80"

My service without error custom

nginx:
    image: nginx:alpine
    volumes:
      - ./www/:/var/www/html
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    networks:
      - traefik
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == worker
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=traefik"
        - "traefik.http.services.backend.loadbalancer.server.port=80"
        - "traefik.http.services.backend.loadbalancer.server.scheme=http"
        - "traefik.http.routers.backend.entrypoints=web"
        - "traefik.http.routers.backend.priority=10"
        - "traefik.http.routers.backend.rule=PathPrefix(`/backend`)"
        - "traefik.http.routers.backend.middlewares=backend_ipwhitelist,backend_auth,error-pages-middleware"

        # If I change the order to check if my error pages middleware works, I got a 404 page --> that's correct
        # - "traefik.http.routers.backend.middlewares=error-pages-middleware,backend_ipwhitelist,backend_auth"

        # IP set to anything to get a forbidden error
        - "traefik.http.middlewares.backend_ipwhitelist.ipwhitelist.sourcerange=0.0.0.0"
        - "traefik.http.middlewares.backend_auth.basicauth.users=user:pass"

It's like BasicAuth and IpWhitelist return error pages without going to next middleware.
Do you know if it's possible to handle these errors?

Many thanks for your help!
Merry X-Mas and Take care!

Hi tof,

I am facing the same issue. Did you fix it? If so, what solution did you implement ?

Thanks a lot

Hi Anthony,

Unfortunately, for the moment I can't find any solution.
I'll post here any update