Repository: traefik/traefik (language: go)

Issue:
Error while Peeking first byte
### Welcome!

- [x] Yes, I've searched similar issues on [GitHub](https://github.com/traefik/traefik/issues) and didn't find any.
- [x] Yes, I've searched similar issues on the [Traefik community forum](https://community.traefik.io) and didn't find any.

### What did you do?

Update to version 3.2.0 and this error `Error while Peeking first byte error`




### What did you see instead?

```
2024-10-31T06:34:02+01:00 ERR Error while Peeking first byte error="read tcp 10.244.32.120:443->192.168.1.102:5711: read: connection reset by peer"
2024-10-31T06:34:02+01:00 ERR Error while Peeking first byte error="read tcp 10.244.32.120:443->192.168.1.102:37752: read: connection reset by peer"
```

### What version of Traefik are you using?

3.2.0

### What is your environment & configuration?

```yaml
api:
      insecure: true
      dashboard: true
    accessLog: {}
    entryPoints:
      web:
        address: ":80"
      websecure:
        address: ":443"
        http:
          tls: {}
    providers:
      kubernetesingress: {}
      kubernetesCRD: {}
    certificatesResolvers:
      file:
        acme:
          email: "removed"
          storage: "removed"
          certificatesDuration: 2160
          preferredchain: "ISRG Root X1"
          keytype: "RSA4096"
          dnschallenge:
            provider: "removed"
            resolvers: 
              - "1.1.1.1:53"
              - "8.8.8.8:53"
    metrics:
      influxDB2:
        address: "removed"
        token: "removed"
        org: "my_org"
        bucket: "trafik"
        pushInterval: 30s
        addServicesLabels: true
```

Kubernetes version 1.30.6

### If applicable, please paste the log output in DEBUG level

_No response_


Discussion / hints:
Same errors here started after the last release.
It is definitely related to the usual TCP health checking cloud load balancers does in my case. But can't make those healthchecks work for websecure port and only when proxy-protocol is enabled.

Fix patch:
diff --git a/pkg/server/router/tcp/postgres.go b/pkg/server/router/tcp/postgres.go
index 99a658c0eb..5d773704fb 100644
--- a/pkg/server/router/tcp/postgres.go
+++ b/pkg/server/router/tcp/postgres.go
@@ -29,7 +29,7 @@ func isPostgres(br *bufio.Reader) (bool, error) {
 		if err != nil {
 			var opErr *net.OpError
 			if !errors.Is(err, io.EOF) && (!errors.As(err, &opErr) || !opErr.Timeout()) {
-				log.Error().Err(err).Msg("Error while Peeking first byte")
+				log.Debug().Err(err).Msg("Error while peeking first bytes")
 			}
 			return false, err
 		}
diff --git a/pkg/server/router/tcp/router.go b/pkg/server/router/tcp/router.go
index 9356e0d69d..0f5c8f843f 100644
--- a/pkg/server/router/tcp/router.go
+++ b/pkg/server/router/tcp/router.go
@@ -364,7 +364,7 @@ func clientHelloInfo(br *bufio.Reader) (*clientHello, error) {
 	if err != nil {
 		var opErr *net.OpError
 		if !errors.Is(err, io.EOF) && (!errors.As(err, &opErr) || !opErr.Timeout()) {
-			log.Debug().Err(err).Msg("Error while Peeking first byte")
+			log.Debug().Err(err).Msg("Error while peeking first byte")
 		}
 		return nil, err
 	}


Test patch: