Skip to content

Commit 7598339

Browse files
committed
Add support for PROXY protocol v2.
PROXY protocol can be useful to preserve the client IP address when a non-transparent load balancer is used. PROXY protocol v1 is human readable while v2 is binary. github.com/armon/go-proxyproto supports only PROXY protocol v1. github.com/pires/go-proxyproto supports PROXY protocol v1 & v2. Some load balancers support PROXY protocol v1, e.g. AWS classic load balancer. Others only support PROXY protocol v2, e.g. AWS network load balancer. If the previous implementation received PROXY protocl v2 it did not detect it and forwarded it as workload data. In conjunction with TLS this lead to a packet including PROXY protocol v2 AND the TLS client hello being forwarded to nginx causing issues (400 Bad Request). With the new library, it is possible to run ingress-nginx with ssl passthrough and PROXY protocol enabled in environments using PROXY protocol v2.
1 parent 2bb9ebc commit 7598339

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ go 1.24.6
44

55
require (
66
dario.cat/mergo v1.0.2
7-
github.com/armon/go-proxyproto v0.1.0
87
github.com/eapache/channels v1.1.0
98
github.com/fsnotify/fsnotify v1.9.0
109
github.com/google/go-github/v48 v48.2.0
@@ -19,6 +18,7 @@ require (
1918
github.com/ncabatoff/process-exporter v0.8.7
2019
github.com/onsi/ginkgo/v2 v2.25.0
2120
github.com/opencontainers/cgroups v0.0.4
21+
github.com/pires/go-proxyproto v0.8.1
2222
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
2323
github.com/prometheus/client_golang v1.23.0
2424
github.com/prometheus/client_model v0.6.2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q
1010
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
1111
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
1212
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
13-
github.com/armon/go-proxyproto v0.1.0 h1:TWWcSsjco7o2itn6r25/5AqKBiWmsiuzsUDLT/MTl7k=
14-
github.com/armon/go-proxyproto v0.1.0/go.mod h1:Xj90dce2VKbHzRAeiVQAMBtj4M5oidoXJ8lmgyW21mw=
1513
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
1614
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
1715
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
@@ -175,6 +173,8 @@ github.com/opencontainers/cgroups v0.0.4 h1:XVj8P/IHVms/j+7eh8ggdkTLAxjz84ZzuFyG
175173
github.com/opencontainers/cgroups v0.0.4/go.mod h1:s8lktyhlGUqM7OSRL5P7eAW6Wb+kWPNvt4qvVfzA5vs=
176174
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
177175
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
176+
github.com/pires/go-proxyproto v0.8.1 h1:9KEixbdJfhrbtjpz/ZwCdWDD2Xem0NZ38qMYaASJgp0=
177+
github.com/pires/go-proxyproto v0.8.1/go.mod h1:ZKAAyp3cgy5Y5Mo4n9AlScrkCZwUy0g3Jf+slqQVcuU=
178178
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
179179
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
180180
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

internal/ingress/controller/nginx.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ import (
3737
"time"
3838
"unicode"
3939

40-
proxyproto "github.com/armon/go-proxyproto"
4140
"github.com/eapache/channels"
41+
proxyproto "github.com/pires/go-proxyproto"
4242
apiv1 "k8s.io/api/core/v1"
4343
"k8s.io/apimachinery/pkg/util/intstr"
4444
"k8s.io/client-go/kubernetes/scheme"
@@ -830,7 +830,7 @@ func (n *NGINXController) setupSSLProxy() {
830830
klog.Fatalf("%v", err)
831831
}
832832

833-
proxyList := &proxyproto.Listener{Listener: listener, ProxyHeaderTimeout: cfg.ProxyProtocolHeaderTimeout}
833+
proxyList := &proxyproto.Listener{Listener: listener, ReadHeaderTimeout: cfg.ProxyProtocolHeaderTimeout}
834834

835835
// accept TCP connections on the configured HTTPS port
836836
go func() {

0 commit comments

Comments
 (0)