Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 12, 13:15 UTC
reverse_proxy: Add grace_period for SRV upstreams to Caddyfile (#6264)
Aziz Rmadi committed
Apr 23, 2024 at 08:12 UTC
868af6a062290b82fb1d4d70697739974e814e50
2 files changed
+48
-1
caddytest/integration/caddyfile_adapt/reverse_proxy_dynamic_upstreams_grace_period.caddyfiletest
new
+38
@@ -0,0 +1,38 @@
1
+:8884 {
2
+ reverse_proxy {
3
+ dynamic srv {
4
+ name foo
5
+ refresh 5m
6
+ grace_period 5s
7
+ }
8
+ }
9
+}
10
+----------
11
+{
12
+ "apps": {
13
+ "http": {
14
+ "servers": {
15
+ "srv0": {
16
+ "listen": [
17
+ ":8884"
18
+ ],
19
+ "routes": [
20
+ {
21
+ "handle": [
22
+ {
23
+ "dynamic_upstreams": {
24
+ "grace_period": 5000000000,
25
+ "name": "foo",
26
+ "refresh": 300000000000,
27
+ "source": "srv"
28
+ },
29
+ "handler": "reverse_proxy"
30
+ }
31
+ ]
32
+ }
33
+ ]
34
+ }
35
+ }
36
+ }
37
+ }
38
+}
\ No newline at end of file
modules/caddyhttp/reverseproxy/caddyfile.go
+10
-1
@@ -1356,6 +1356,7 @@ func (h *CopyResponseHeadersHandler) UnmarshalCaddyfile(d *caddyfile.Dispenser)
1356
// resolvers <resolvers...>
1357
// dial_timeout <timeout>
1358
// dial_fallback_delay <timeout>
1359
+// grace_period <duration>
1360
// }
1361
func (u *SRVUpstreams) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
1362
d.Next() // consume upstream source name
@@ -1435,7 +1436,15 @@ func (u *SRVUpstreams) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
1436
return d.Errf("bad delay value '%s': %v", d.Val(), err)
1437
}
1438
u.FallbackDelay = caddy.Duration(dur)
1438
-
1439
+ case "grace_period":
1440
+ if !d.NextArg() {
1441
+ return d.ArgErr()
1442
+ }
1443
+ dur, err := caddy.ParseDuration(d.Val())
1444
+ if err != nil {
1445
+ return d.Errf("bad grace period value '%s': %v", d.Val(), err)
1446
+ }
1447
+ u.GracePeriod = caddy.Duration(dur)
1448
default:
1449
return d.Errf("unrecognized srv option '%s'", d.Val())
1450
}