Skip to content

bogus greeting in traefik -> traefik communication #10522

@dodgex

Description

@dodgex

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""

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/serverkind/bug/possiblea possible bug that needs analysis before it is confirmed or fixed.priority/P2need to be fixed in the future

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions