-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Description
Welcome!
- Yes, I've searched similar issues on GitHub and didn't find any.
- Yes, I've searched similar issues on the Traefik community forum and didn't find any.
What did you do?
We have a central traefik instance that routes requests to traefik instances running on the server that is serving the desired applicaton. recently we updated our traefik instance from 2.10.7 to 2.11.
After this we started to get Internal Server Error or Bad Gateway errors from traefik but nothing in the logs at this point. adding --log.level=DEBUG to the traefik instances result to the errors pasted below. The errors appeared in the second traefik instance.
The communication chain is Browser -HTTPS-> Traefik1 -HTTPS-> Traefik2 -HTTP-> local app container. Both traefik use a valid wildcard certificate.
When using a serversTransports with disableHTTP2 on the service loadbalancer configuration OR downgrading the first traefik to 2.10.7 it works fine. using 3.0.0-rc3 on the first traefik instance has the same issue.
The issue is not always present (works on first opening and after a browser restart; most of the times), and has a high chance to also be related to the fact, that the application that has been reported as affected are using kerberos/spnego authentication. The easiest way to enforce the issue is to use the logout button (present in case a user is logged in not via kerberos/spnego).
While this makes it hard if not impossible to reproduce, I still decided to open this issue in case you have an idea what change might have caused it...
What did you see instead?
Instead of a working application as before the upgrade, we now get Internal Server Error and Bad Gateway errors.
What version of Traefik are you using?
-
Does not work when both instances are using this version
Version: 2.11.0
Codename: cheddar
Go version: go1.22.0
Built: 2024-02-12T15:26:45Z
OS/Arch: linux/amd64 -
When first or both instances using this version it works
Version: 2.10.7
Codename: saintmarcelin
Go version: go1.21.5
Built: 2023-12-06T15:54:59Z
OS/Arch: linux/amd64 -
Also tested with the first server beeing 3.0.0-rc3
Version: 3.0.0-rc3
Codename: beaufort
Go version: go1.22.1
Built: 2024-03-13T15:49:38Z
OS/Arch: linux/amd64
What is your environment & configuration?
# docker copose command and labels for both
command:
- --api.insecure=true
- --entryPoints.http.address=:80
- --entryPoints.https.address=:443
- --metrics.prometheus=true
- --providers.docker
- --providers.docker.exposedByDefault=false
- --providers.docker.network=web
- --providers.file.directory=/opt/traefik/conf
- --providers.file.watch=true
- --log.level=DEBUG # only for current testing
labels:
- "traefik.enable=true"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
- "traefik.http.routers.traefik.rule=Host(`traefik.server1.our.network`)" # server2 for second
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.middlewares.traefik-auth.basicauth.users=credentials"
- "traefik.http.routers.traefik.middlewares=traefik-auth@docker"
# https-redirect.yaml (exists on both servers)
http:
middlewares:
https-redirect:
redirectScheme:
scheme: https
permanent: true# reverse-proxy.yaml (exists only on server1)
http:
services:
srv-server2-http:
loadBalancer:
servers:
- url: "http://server2.our.network"
srv-server2-https:
loadBalancer:
servers:
- url: "https://server2.our.network"
routers:
app-router:
rule: "Host(`app.our.network`)"
service: srv-server2-http
entrypoints: http
middlewares:
- "https-redirect"
app-secure-router:
rule: "Host(`app.our.network`)"
service: srv-server2-https
entrypoints: https
tls: {}# docker compose for the target app (only on server2)
services:
frontend:
labels:
- traefik.enable=true
- traefik.http.services.app-frontend.loadbalancer.server.port=8080
- traefik.http.routers.app-frontend-https.rule=Host(`app.our.network`)
- traefik.http.routers.app-frontend-https.tls=true
- traefik.http.routers.app-frontend-https.entrypoints=https
backend:
labels:
- traefik.enable=true
- traefik.http.services.app-backend.loadbalancer.server.port=8080
- traefik.http.routers.app-backend-https.rule=Host(`app.our.network`) && PathPrefix(`/backend/`)
- traefik.http.routers.app-backend-https.tls=true
- traefik.http.routers.app-backend-https.entrypoints=https
If applicable, please paste the log output in DEBUG level
time="2024-03-14T10:13:12+01:00" level=debug msg="http2: server: error reading preface from client 10.101.x.y:41280: bogus greeting "GET /favicon.svg HTTP/1.""
time="2024-03-14T10:13:31+01:00" level=debug msg="http2: server: error reading preface from client 10.101.x.y:41432: bogus greeting "GET / HTTP/1.1\r\nHost: sc""