@@ -29,9 +29,15 @@ const (
29 // DefaultUpstreamPassHostHeader determines if upstreams will pass the host header by default.
29 // DefaultUpstreamPassHostHeader determines if upstreams will pass the host header by default.
30 DefaultUpstreamPassHostHeader bool = true
30 DefaultUpstreamPassHostHeader bool = true
32+ // Static upstreams cannot pass the host header.
33+ DefaultStaticPassHostHeader bool = false
32 // DefaultUpstreamProxyWebSockets determines if upstreams will proxy websockets by default.
35 // DefaultUpstreamProxyWebSockets determines if upstreams will proxy websockets by default.
33 DefaultUpstreamProxyWebSockets bool = true
36 DefaultUpstreamProxyWebSockets bool = true
38+ // Static upstreams cannot proxy websockets.
39+ DefaultStaticProxyWebSockets bool = false
35 // DefaultUpstreamDisableKeepAlives determines if upstreams will disable keep-alives by default.
41 // DefaultUpstreamDisableKeepAlives determines if upstreams will disable keep-alives by default.
36 DefaultUpstreamDisableKeepAlives bool = false
42 DefaultUpstreamDisableKeepAlives bool = false
@@ -143,19 +149,31 @@ func (u *Upstream) EnsureDefaults() {
143 if u.Static == nil {
149 if u.Static == nil {
144 u.Static = ptr.To(DefaultUpstreamStatic)
150 u.Static = ptr.To(DefaultUpstreamStatic)
146− if u.FlushInterval == nil {
147− u.FlushInterval = ptr.To(DefaultUpstreamFlushInterval)
149 if u.PassHostHeader == nil {
152 if u.PassHostHeader == nil {
150 u.PassHostHeader = ptr.To(DefaultUpstreamPassHostHeader)
153 u.PassHostHeader = ptr.To(DefaultUpstreamPassHostHeader)
152 if u.ProxyWebSockets == nil {
155 if u.ProxyWebSockets == nil {
153 u.ProxyWebSockets = ptr.To(DefaultUpstreamProxyWebSockets)
156 u.ProxyWebSockets = ptr.To(DefaultUpstreamProxyWebSockets)
158+ if u.FlushInterval == nil {
159+ u.FlushInterval = ptr.To(DefaultUpstreamFlushInterval)
155 if u.Timeout == nil {
161 if u.Timeout == nil {
156 u.Timeout = ptr.To(DefaultUpstreamTimeout)
162 u.Timeout = ptr.To(DefaultUpstreamTimeout)
158 if u.DisableKeepAlives == nil {
164 if u.DisableKeepAlives == nil {
159 u.DisableKeepAlives = ptr.To(DefaultUpstreamDisableKeepAlives)
165 u.DisableKeepAlives = ptr.To(DefaultUpstreamDisableKeepAlives)
168+ // Force defaults compatible with static upstreams.
169+ // This overrides any user provided values to ensure static upstreams behave correctly.
170+ if ptr.Deref(u.Static, DefaultUpstreamStatic) {
172+ u.InsecureSkipTLSVerify = ptr.To(DefaultUpsteamInsecureSkipTLSVerify)
173+ u.DisableKeepAlives = ptr.To(DefaultUpstreamDisableKeepAlives)
174+ u.PassHostHeader = ptr.To(DefaultStaticPassHostHeader)
175+ u.ProxyWebSockets = ptr.To(DefaultStaticProxyWebSockets)
176+ u.FlushInterval = ptr.To(DefaultUpstreamFlushInterval)
177+ u.Timeout = ptr.To(DefaultUpstreamTimeout)