diff --git a/cmd/cloudflared/tunnel/cmd.go b/cmd/cloudflared/tunnel/cmd.go index a03ba888..00a8da74 100644 --- a/cmd/cloudflared/tunnel/cmd.go +++ b/cmd/cloudflared/tunnel/cmd.go @@ -494,6 +494,11 @@ func tunnelFlags(shouldHide bool) []cli.Flag { EnvVars: []string{"TUNNEL_EDGE"}, Hidden: true, }), + altsrc.NewStringSliceFlag(&cli.StringSliceFlag{ + Name: "region", + Usage: "Cloudflare Edge region to connect to. Omit or set to empty to connect to the global region.", + EnvVars: []string{"TUNNEL_REGION"}, + }), altsrc.NewStringFlag(&cli.StringFlag{ Name: tlsconfig.CaCertFlag, Usage: "Certificate Authority authenticating connections with Cloudflare's edge network.", diff --git a/cmd/cloudflared/tunnel/configuration.go b/cmd/cloudflared/tunnel/configuration.go index 8becf178..dc264c31 100644 --- a/cmd/cloudflared/tunnel/configuration.go +++ b/cmd/cloudflared/tunnel/configuration.go @@ -279,6 +279,7 @@ func prepareTunnelConfig( OSArch: buildInfo.OSArch(), ClientID: clientID, EdgeAddrs: c.StringSlice("edge"), + Region: c.String("region"), HAConnections: c.Int("ha-connections"), IncidentLookup: origin.NewIncidentLookup(), IsAutoupdated: c.Bool("is-autoupdated"), diff --git a/origin/supervisor.go b/origin/supervisor.go index bcb19da0..4508f2ca 100644 --- a/origin/supervisor.go +++ b/origin/supervisor.go @@ -74,7 +74,7 @@ func NewSupervisor(config *TunnelConfig, reconnectCh chan ReconnectSignal, grace if len(config.EdgeAddrs) > 0 { edgeIPs, err = edgediscovery.StaticEdge(config.Log, config.EdgeAddrs) } else { - edgeIPs, err = edgediscovery.ResolveEdge(config.Log, "") + edgeIPs, err = edgediscovery.ResolveEdge(config.Log, config.Region) } if err != nil { return nil, err diff --git a/origin/tunnel.go b/origin/tunnel.go index fa734b4f..4b56a464 100644 --- a/origin/tunnel.go +++ b/origin/tunnel.go @@ -45,6 +45,7 @@ type TunnelConfig struct { ClientID string CloseConnOnce *sync.Once // Used to close connectedSignal no more than once EdgeAddrs []string + Region string HAConnections int IncidentLookup IncidentLookup IsAutoupdated bool