Added parsing of seconds millisecond for nginx timeouts*
This commit is contained in:
parent
b51334d19b
commit
5a354bf4dc
14 changed files with 60375 additions and 107 deletions
|
@ -74,9 +74,9 @@ You can add these Kubernetes annotations to specific Ingress objects to customiz
|
||||||
|[nginx.ingress.kubernetes.io/proxy-body-size](#custom-max-body-size)|string|
|
|[nginx.ingress.kubernetes.io/proxy-body-size](#custom-max-body-size)|string|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-cookie-domain](#proxy-cookie-domain)|string|
|
|[nginx.ingress.kubernetes.io/proxy-cookie-domain](#proxy-cookie-domain)|string|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-cookie-path](#proxy-cookie-path)|string|
|
|[nginx.ingress.kubernetes.io/proxy-cookie-path](#proxy-cookie-path)|string|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-connect-timeout](#custom-timeouts)|number|
|
|[nginx.ingress.kubernetes.io/proxy-connect-timeout](#custom-timeouts)|string "s" or "ms"|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-send-timeout](#custom-timeouts)|number|
|
|[nginx.ingress.kubernetes.io/proxy-send-timeout](#custom-timeouts)|string "s" or "ms"|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-read-timeout](#custom-timeouts)|number|
|
|[nginx.ingress.kubernetes.io/proxy-read-timeout](#custom-timeouts)|string "s" or "ms"|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-next-upstream](#custom-timeouts)|string|
|
|[nginx.ingress.kubernetes.io/proxy-next-upstream](#custom-timeouts)|string|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-next-upstream-timeout](#custom-timeouts)|number|
|
|[nginx.ingress.kubernetes.io/proxy-next-upstream-timeout](#custom-timeouts)|number|
|
||||||
|[nginx.ingress.kubernetes.io/proxy-next-upstream-tries](#custom-timeouts)|number|
|
|[nginx.ingress.kubernetes.io/proxy-next-upstream-tries](#custom-timeouts)|number|
|
||||||
|
|
|
@ -181,9 +181,9 @@ The following table shows a configuration option's name, type, and the default v
|
||||||
|[location-snippet](#location-snippet)|string|""||
|
|[location-snippet](#location-snippet)|string|""||
|
||||||
|[custom-http-errors](#custom-http-errors)|[]int|[]int{}||
|
|[custom-http-errors](#custom-http-errors)|[]int|[]int{}||
|
||||||
|[proxy-body-size](#proxy-body-size)|string|"1m"||
|
|[proxy-body-size](#proxy-body-size)|string|"1m"||
|
||||||
|[proxy-connect-timeout](#proxy-connect-timeout)|int|5||
|
|[proxy-connect-timeout](#proxy-connect-timeout)|string|5s||
|
||||||
|[proxy-read-timeout](#proxy-read-timeout)|int|60||
|
|[proxy-read-timeout](#proxy-read-timeout)|string|60s||
|
||||||
|[proxy-send-timeout](#proxy-send-timeout)|int|60||
|
|[proxy-send-timeout](#proxy-send-timeout)|string|60s||
|
||||||
|[proxy-buffers-number](#proxy-buffers-number)|int|4||
|
|[proxy-buffers-number](#proxy-buffers-number)|int|4||
|
||||||
|[proxy-buffer-size](#proxy-buffer-size)|string|"4k"||
|
|[proxy-buffer-size](#proxy-buffer-size)|string|"4k"||
|
||||||
|[proxy-cookie-path](#proxy-cookie-path)|string|"off"||
|
|[proxy-cookie-path](#proxy-cookie-path)|string|"off"||
|
||||||
|
|
|
@ -143,22 +143,20 @@ func (a ingAnnotations) parseInt(name string) (int, error) {
|
||||||
func (a ingAnnotations) parseTimeout(name string) (string, error) {
|
func (a ingAnnotations) parseTimeout(name string) (string, error) {
|
||||||
val, ok := a[name]
|
val, ok := a[name]
|
||||||
if ok {
|
if ok {
|
||||||
setUnits, _ := regexp.Compile("(\\d+)(s|ms)$")
|
s := normalizeString(val)
|
||||||
|
if len(s) == 0 {
|
||||||
if setUnits.MatchString(name) {
|
|
||||||
return name, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
noUnits, _ := regexp.Compile("\\d+$")
|
|
||||||
|
|
||||||
if noUnits.MatchString(name) {
|
|
||||||
return fmt.Sprintf("%ss", name), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if name == "" {
|
|
||||||
return "0", errors.NewInvalidAnnotationContent(name, val)
|
return "0", errors.NewInvalidAnnotationContent(name, val)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setUnits, _ := regexp.Compile(`(\d+)(s|ms)?$`)
|
||||||
|
if setUnits.MatchString(s) {
|
||||||
|
return s, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
noUnits, _ := regexp.Compile(`\d+$`)
|
||||||
|
if noUnits.MatchString(s) {
|
||||||
|
return fmt.Sprintf("%ss", s), nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return "0", errors.ErrMissingAnnotations
|
return "0", errors.ErrMissingAnnotations
|
||||||
}
|
}
|
||||||
|
@ -204,9 +202,8 @@ func GetIntAnnotation(name string, ing *networking.Ingress, fields AnnotationFie
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTimeoutAnnotation extracts a string from an Ingress annotation, special format 10s
|
// GetTimeoutAnnotation extracts a string from an Ingress annotation, special format 10s
|
||||||
func GetTimeoutAnnotation(name string, ing *networking.Ingress) (string, error) {
|
func GetTimeoutAnnotation(name string, ing *networking.Ingress, fields AnnotationFields) (string, error) {
|
||||||
v := GetAnnotationWithPrefix(name)
|
v, err := checkAnnotation(name, ing, fields)
|
||||||
err := checkAnnotation(v, ing)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
|
@ -265,20 +265,17 @@ func (a proxy) Parse(ing *networking.Ingress) (interface{}, error) {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
config.ConnectTimeout, err = parser.GetIntAnnotation(proxyConnectTimeoutAnnotation, ing, a.annotationConfig.Annotations)
|
config.ConnectTimeout, err = parser.GetTimeoutAnnotation(proxyConnectTimeoutAnnotation, ing, a.annotationConfig.Annotations)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
config.ConnectTimeout = defBackend.ProxyConnectTimeout
|
config.ConnectTimeout = defBackend.ProxyConnectTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
|
config.SendTimeout, err = parser.GetTimeoutAnnotation(proxySendTimeoutAnnotation, ing, a.annotationConfig.Annotations)
|
||||||
config.SendTimeout, err = parser.GetIntAnnotation(proxySendTimeoutAnnotation, ing, a.annotationConfig.Annotations)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
config.SendTimeout = defBackend.ProxySendTimeout
|
config.SendTimeout = defBackend.ProxySendTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
config.ReadTimeout, err = parser.GetIntAnnotation(proxyReadTimeoutAnnotation, ing, a.annotationConfig.Annotations)
|
config.ReadTimeout, err = parser.GetTimeoutAnnotation(proxyReadTimeoutAnnotation, ing, a.annotationConfig.Annotations)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
config.ReadTimeout = defBackend.ProxyReadTimeout
|
config.ReadTimeout = defBackend.ProxyReadTimeout
|
||||||
|
|
|
@ -83,9 +83,9 @@ type mockBackend struct {
|
||||||
|
|
||||||
func (m mockBackend) GetDefaultBackend() defaults.Backend {
|
func (m mockBackend) GetDefaultBackend() defaults.Backend {
|
||||||
return defaults.Backend{
|
return defaults.Backend{
|
||||||
ProxyConnectTimeout: 10,
|
ProxyConnectTimeout: "10s",
|
||||||
ProxySendTimeout: 15,
|
ProxySendTimeout: "15s",
|
||||||
ProxyReadTimeout: 20,
|
ProxyReadTimeout: "20s",
|
||||||
ProxyBuffersNumber: 4,
|
ProxyBuffersNumber: 4,
|
||||||
ProxyBufferSize: "10k",
|
ProxyBufferSize: "10k",
|
||||||
ProxyBodySize: "3k",
|
ProxyBodySize: "3k",
|
||||||
|
@ -104,8 +104,8 @@ func TestProxy(t *testing.T) {
|
||||||
|
|
||||||
data := map[string]string{}
|
data := map[string]string{}
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-connect-timeout")] = "1"
|
data[parser.GetAnnotationWithPrefix("proxy-connect-timeout")] = "1"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-send-timeout")] = "2"
|
data[parser.GetAnnotationWithPrefix("proxy-send-timeout")] = "15s"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-read-timeout")] = "3"
|
data[parser.GetAnnotationWithPrefix("proxy-read-timeout")] = "20s"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-buffers-number")] = "8"
|
data[parser.GetAnnotationWithPrefix("proxy-buffers-number")] = "8"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-buffer-size")] = "1k"
|
data[parser.GetAnnotationWithPrefix("proxy-buffer-size")] = "1k"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-body-size")] = "2k"
|
data[parser.GetAnnotationWithPrefix("proxy-body-size")] = "2k"
|
||||||
|
@ -126,14 +126,14 @@ func TestProxy(t *testing.T) {
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("expected a Config type")
|
t.Fatalf("expected a Config type")
|
||||||
}
|
}
|
||||||
if p.ConnectTimeout != 1 {
|
if p.ConnectTimeout != "1" {
|
||||||
t.Errorf("expected 1 as connect-timeout but returned %v", p.ConnectTimeout)
|
t.Errorf("expected 1 as connect-timeout but returned %v", p.ConnectTimeout)
|
||||||
}
|
}
|
||||||
if p.SendTimeout != 2 {
|
if p.SendTimeout != "15s" {
|
||||||
t.Errorf("expected 2 as send-timeout but returned %v", p.SendTimeout)
|
t.Errorf("expected 15s as send-timeout but returned %v", p.SendTimeout)
|
||||||
}
|
}
|
||||||
if p.ReadTimeout != 3 {
|
if p.ReadTimeout != "20s" {
|
||||||
t.Errorf("expected 3 as read-timeout but returned %v", p.ReadTimeout)
|
t.Errorf("expected 20s as read-timeout but returned %v", p.ReadTimeout)
|
||||||
}
|
}
|
||||||
if p.BuffersNumber != 8 {
|
if p.BuffersNumber != 8 {
|
||||||
t.Errorf("expected 8 as proxy-buffers-number but returned %v", p.BuffersNumber)
|
t.Errorf("expected 8 as proxy-buffers-number but returned %v", p.BuffersNumber)
|
||||||
|
@ -172,8 +172,8 @@ func TestProxyComplex(t *testing.T) {
|
||||||
|
|
||||||
data := map[string]string{}
|
data := map[string]string{}
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-connect-timeout")] = "1"
|
data[parser.GetAnnotationWithPrefix("proxy-connect-timeout")] = "1"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-send-timeout")] = "2"
|
data[parser.GetAnnotationWithPrefix("proxy-send-timeout")] = "15s"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-read-timeout")] = "3"
|
data[parser.GetAnnotationWithPrefix("proxy-read-timeout")] = "20s"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-buffers-number")] = "8"
|
data[parser.GetAnnotationWithPrefix("proxy-buffers-number")] = "8"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-buffer-size")] = "1k"
|
data[parser.GetAnnotationWithPrefix("proxy-buffer-size")] = "1k"
|
||||||
data[parser.GetAnnotationWithPrefix("proxy-body-size")] = "2k"
|
data[parser.GetAnnotationWithPrefix("proxy-body-size")] = "2k"
|
||||||
|
@ -194,14 +194,14 @@ func TestProxyComplex(t *testing.T) {
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("expected a Config type")
|
t.Fatalf("expected a Config type")
|
||||||
}
|
}
|
||||||
if p.ConnectTimeout != 1 {
|
if p.ConnectTimeout != "1" {
|
||||||
t.Errorf("expected 1 as connect-timeout but returned %v", p.ConnectTimeout)
|
t.Errorf("expected 1 as connect-timeout but returned %v", p.ConnectTimeout)
|
||||||
}
|
}
|
||||||
if p.SendTimeout != 2 {
|
if p.SendTimeout != "15s" {
|
||||||
t.Errorf("expected 2 as send-timeout but returned %v", p.SendTimeout)
|
t.Errorf("expected 15s as send-timeout but returned %v", p.SendTimeout)
|
||||||
}
|
}
|
||||||
if p.ReadTimeout != 3 {
|
if p.ReadTimeout != "20s" {
|
||||||
t.Errorf("expected 3 as read-timeout but returned %v", p.ReadTimeout)
|
t.Errorf("expected 20s as read-timeout but returned %v", p.ReadTimeout)
|
||||||
}
|
}
|
||||||
if p.BuffersNumber != 8 {
|
if p.BuffersNumber != 8 {
|
||||||
t.Errorf("expected 8 as proxy-buffers-number but returned %v", p.BuffersNumber)
|
t.Errorf("expected 8 as proxy-buffers-number but returned %v", p.BuffersNumber)
|
||||||
|
@ -249,14 +249,14 @@ func TestProxyWithNoAnnotation(t *testing.T) {
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("expected a Config type")
|
t.Fatalf("expected a Config type")
|
||||||
}
|
}
|
||||||
if p.ConnectTimeout != 10 {
|
if p.ConnectTimeout != "10s" {
|
||||||
t.Errorf("expected 10 as connect-timeout but returned %v", p.ConnectTimeout)
|
t.Errorf("expected 10s as connect-timeout but returned %v", p.ConnectTimeout)
|
||||||
}
|
}
|
||||||
if p.SendTimeout != 15 {
|
if p.SendTimeout != "15s" {
|
||||||
t.Errorf("expected 15 as send-timeout but returned %v", p.SendTimeout)
|
t.Errorf("expected 15s as send-timeout but returned %v", p.SendTimeout)
|
||||||
}
|
}
|
||||||
if p.ReadTimeout != 20 {
|
if p.ReadTimeout != "20s" {
|
||||||
t.Errorf("expected 20 as read-timeout but returned %v", p.ReadTimeout)
|
t.Errorf("expected 20s as read-timeout but returned %v", p.ReadTimeout)
|
||||||
}
|
}
|
||||||
if p.BuffersNumber != 4 {
|
if p.BuffersNumber != 4 {
|
||||||
t.Errorf("expected 4 as buffer-number but returned %v", p.BuffersNumber)
|
t.Errorf("expected 4 as buffer-number but returned %v", p.BuffersNumber)
|
||||||
|
|
|
@ -55,8 +55,8 @@ func TestProxyTimeoutParsing(t *testing.T) {
|
||||||
func TestMergeConfigMapToStruct(t *testing.T) {
|
func TestMergeConfigMapToStruct(t *testing.T) {
|
||||||
conf := map[string]string{
|
conf := map[string]string{
|
||||||
"custom-http-errors": "300,400,demo",
|
"custom-http-errors": "300,400,demo",
|
||||||
"proxy-read-timeout": "1",
|
"proxy-read-timeout": "1s",
|
||||||
"proxy-send-timeout": "2",
|
"proxy-send-timeout": "2s",
|
||||||
"skip-access-log-urls": "/log,/demo,/test",
|
"skip-access-log-urls": "/log,/demo,/test",
|
||||||
"use-proxy-protocol": "true",
|
"use-proxy-protocol": "true",
|
||||||
"disable-access-log": "true",
|
"disable-access-log": "true",
|
||||||
|
@ -85,8 +85,8 @@ func TestMergeConfigMapToStruct(t *testing.T) {
|
||||||
def.AccessLogPath = "/var/log/test/access.log"
|
def.AccessLogPath = "/var/log/test/access.log"
|
||||||
def.ErrorLogPath = "/var/log/test/error.log"
|
def.ErrorLogPath = "/var/log/test/error.log"
|
||||||
def.SkipAccessLogURLs = []string{"/log", "/demo", "/test"}
|
def.SkipAccessLogURLs = []string{"/log", "/demo", "/test"}
|
||||||
def.ProxyReadTimeout = 1
|
def.ProxyReadTimeout = "1s"
|
||||||
def.ProxySendTimeout = 2
|
def.ProxySendTimeout = "2s"
|
||||||
def.UseProxyProtocol = true
|
def.UseProxyProtocol = true
|
||||||
def.GzipDisable = "msie6"
|
def.GzipDisable = "msie6"
|
||||||
def.GzipLevel = 9
|
def.GzipLevel = 9
|
||||||
|
|
60274
test/data/config.json
60274
test/data/config.json
File diff suppressed because it is too large
Load diff
|
@ -115,9 +115,9 @@ var _ = framework.DescribeAnnotation("proxy-*", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.It("should set valid proxy timeouts", func() {
|
ginkgo.It("should set valid proxy timeouts", func() {
|
||||||
proxyConnectTimeout := "50"
|
proxyConnectTimeout := "5s"
|
||||||
proxySendTimeout := "20"
|
proxySendTimeout := "60s"
|
||||||
proxyReadtimeout := "20"
|
proxyReadtimeout := "60s"
|
||||||
|
|
||||||
annotations := make(map[string]string)
|
annotations := make(map[string]string)
|
||||||
annotations["nginx.ingress.kubernetes.io/proxy-connect-timeout"] = proxyConnectTimeout
|
annotations["nginx.ingress.kubernetes.io/proxy-connect-timeout"] = proxyConnectTimeout
|
||||||
|
@ -129,9 +129,9 @@ var _ = framework.DescribeAnnotation("proxy-*", func() {
|
||||||
|
|
||||||
f.WaitForNginxServer(host,
|
f.WaitForNginxServer(host,
|
||||||
func(server string) bool {
|
func(server string) bool {
|
||||||
return strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) &&
|
return strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %s;", proxyConnectTimeout)) &&
|
||||||
strings.Contains(server, fmt.Sprintf("proxy_send_timeout %ss;", proxySendTimeout)) &&
|
strings.Contains(server, fmt.Sprintf("proxy_send_timeout %s;", proxySendTimeout)) &&
|
||||||
strings.Contains(server, fmt.Sprintf("proxy_read_timeout %ss;", proxyReadtimeout))
|
strings.Contains(server, fmt.Sprintf("proxy_read_timeout %s;", proxyReadtimeout))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -150,9 +150,9 @@ var _ = framework.DescribeAnnotation("proxy-*", func() {
|
||||||
|
|
||||||
f.WaitForNginxServer(host,
|
f.WaitForNginxServer(host,
|
||||||
func(server string) bool {
|
func(server string) bool {
|
||||||
return !strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) &&
|
return !strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %s;", proxyConnectTimeout)) &&
|
||||||
!strings.Contains(server, fmt.Sprintf("proxy_send_timeout %ss;", proxySendTimeout)) &&
|
!strings.Contains(server, fmt.Sprintf("proxy_send_timeout %s;", proxySendTimeout)) &&
|
||||||
!strings.Contains(server, fmt.Sprintf("proxy_read_timeout %ss;", proxyReadtimeout))
|
!strings.Contains(server, fmt.Sprintf("proxy_read_timeout %s;", proxyReadtimeout))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ var _ = framework.DescribeSetting("proxy-connect-timeout", func() {
|
||||||
proxyConnectTimeout := "50"
|
proxyConnectTimeout := "50"
|
||||||
|
|
||||||
cm := make(map[string]string)
|
cm := make(map[string]string)
|
||||||
cm["proxy-connect-timeout"] = proxyConnectTimeout
|
cm["proxy-connect-timeout"] = fmt.Sprintf("%ss", proxyConnectTimeout)
|
||||||
f.SetNginxConfigMapData(cm)
|
f.SetNginxConfigMapData(cm)
|
||||||
|
|
||||||
f.WaitForNginxServer(host,
|
f.WaitForNginxServer(host,
|
||||||
|
|
|
@ -41,7 +41,7 @@ var _ = framework.DescribeSetting("proxy-read-timeout", func() {
|
||||||
proxyReadtimeout := "20"
|
proxyReadtimeout := "20"
|
||||||
|
|
||||||
cm := make(map[string]string)
|
cm := make(map[string]string)
|
||||||
cm["proxy-read-timeout"] = proxyReadtimeout
|
cm["proxy-read-timeout"] = fmt.Sprintf("%ss", proxyReadtimeout)
|
||||||
f.SetNginxConfigMapData(cm)
|
f.SetNginxConfigMapData(cm)
|
||||||
|
|
||||||
f.WaitForNginxServer(host,
|
f.WaitForNginxServer(host,
|
||||||
|
|
|
@ -41,7 +41,7 @@ var _ = framework.DescribeSetting("proxy-send-timeout", func() {
|
||||||
proxySendTimeout := "20"
|
proxySendTimeout := "20"
|
||||||
|
|
||||||
cm := make(map[string]string)
|
cm := make(map[string]string)
|
||||||
cm["proxy-send-timeout"] = proxySendTimeout
|
cm["proxy-send-timeout"] = fmt.Sprintf("%ss", proxySendTimeout)
|
||||||
f.SetNginxConfigMapData(cm)
|
f.SetNginxConfigMapData(cm)
|
||||||
|
|
||||||
f.WaitForNginxServer(host,
|
f.WaitForNginxServer(host,
|
||||||
|
|
|
@ -285,9 +285,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -392,9 +392,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -470,9 +470,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -582,9 +582,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -660,9 +660,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -682,4 +682,4 @@
|
||||||
}],
|
}],
|
||||||
"TCPBackends": [],
|
"TCPBackends": [],
|
||||||
"UDPBackends": []
|
"UDPBackends": []
|
||||||
}
|
}
|
||||||
|
|
|
@ -285,9 +285,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -392,9 +392,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -470,9 +470,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -582,9 +582,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -631,9 +631,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1m",
|
"bodySize": "1m",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off",
|
"cookiePath": "off",
|
||||||
|
@ -648,7 +648,7 @@
|
||||||
"validationDepth": 0
|
"validationDepth": 0
|
||||||
},
|
},
|
||||||
"use-port-in-redirects": false,
|
"use-port-in-redirects": false,
|
||||||
"configuration-snippet": "",
|
"configuration-snippet": "",
|
||||||
"rateLimit": {
|
"rateLimit": {
|
||||||
"connections": {
|
"connections": {
|
||||||
"name": "",
|
"name": "",
|
||||||
|
@ -682,4 +682,4 @@
|
||||||
}],
|
}],
|
||||||
"TCPBackends": [],
|
"TCPBackends": [],
|
||||||
"UDPBackends": []
|
"UDPBackends": []
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
"name": "kubernetes-dashboard-m3qc0",
|
"name": "kubernetes-dashboard-m3qc0",
|
||||||
"uid": "b9511631-5176-11e7-b3db-080027494b5d",
|
"uid": "b9511631-5176-11e7-b3db-080027494b5d",
|
||||||
"resourceVersion": "3700964"
|
"resourceVersion": "3700964"
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"SessionAffinity": {
|
"SessionAffinity": {
|
||||||
"name": "",
|
"name": "",
|
||||||
|
@ -135,9 +135,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1g",
|
"bodySize": "1g",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off"
|
"cookiePath": "off"
|
||||||
|
@ -235,9 +235,9 @@
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"bodySize": "1g",
|
"bodySize": "1g",
|
||||||
"connectTimeout": 5,
|
"connectTimeout": "5s",
|
||||||
"sendTimeout": 60,
|
"sendTimeout": "60s",
|
||||||
"readTimeout": 60,
|
"readTimeout": "60s",
|
||||||
"bufferSize": "4k",
|
"bufferSize": "4k",
|
||||||
"cookieDomain": "off",
|
"cookieDomain": "off",
|
||||||
"cookiePath": "off"
|
"cookiePath": "off"
|
||||||
|
|
Loading…
Reference in a new issue