summaryrefslogtreecommitdiffhomepage
path: root/cmd/k8s-proxy/k8s-proxy.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/k8s-proxy/k8s-proxy.go')
-rw-r--r--cmd/k8s-proxy/k8s-proxy.go22
1 files changed, 10 insertions, 12 deletions
diff --git a/cmd/k8s-proxy/k8s-proxy.go b/cmd/k8s-proxy/k8s-proxy.go
index e00d43a94..38a86a5e0 100644
--- a/cmd/k8s-proxy/k8s-proxy.go
+++ b/cmd/k8s-proxy/k8s-proxy.go
@@ -50,6 +50,12 @@ import (
"tailscale.com/tsnet"
)
+const (
+ // proxyProtocolV2 enables PROXY protocol v2 to preserve original client
+ // connection info after TLS termination.
+ proxyProtocolV2 = 2
+)
+
func main() {
encoderCfg := zap.NewProductionEncoderConfig()
encoderCfg.EncodeTime = zapcore.RFC3339TimeEncoder
@@ -441,24 +447,16 @@ func setServeConfig(ctx context.Context, lc *local.Client, cm *certs.CertManager
if err != nil {
return fmt.Errorf("error getting local client status: %w", err)
}
- serviceHostPort := ipn.HostPort(fmt.Sprintf("%s.%s:443", name.WithoutPrefix(), status.CurrentTailnet.MagicDNSSuffix))
+ serviceSNI := fmt.Sprintf("%s.%s", name.WithoutPrefix(), status.CurrentTailnet.MagicDNSSuffix)
serveConfig := ipn.ServeConfig{
- // Configure for the Service hostname.
Services: map[tailcfg.ServiceName]*ipn.ServiceConfig{
name: {
TCP: map[uint16]*ipn.TCPPortHandler{
443: {
- HTTPS: true,
- },
- },
- Web: map[ipn.HostPort]*ipn.WebServerConfig{
- serviceHostPort: {
- Handlers: map[string]*ipn.HTTPHandler{
- "/": {
- Proxy: "http://localhost:80",
- },
- },
+ TCPForward: "localhost:80",
+ TerminateTLS: serviceSNI,
+ ProxyProtocol: proxyProtocolV2,
},
},
},