summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--caddytest/integration/caddyfile_adapt/php_fastcgi_index_off.txt26
-rw-r--r--modules/caddyhttp/reverseproxy/fastcgi/caddyfile.go72
2 files changed, 88 insertions, 10 deletions
diff --git a/caddytest/integration/caddyfile_adapt/php_fastcgi_index_off.txt b/caddytest/integration/caddyfile_adapt/php_fastcgi_index_off.txt
index 6d939b4..5ebdbd2 100644
--- a/caddytest/integration/caddyfile_adapt/php_fastcgi_index_off.txt
+++ b/caddytest/integration/caddyfile_adapt/php_fastcgi_index_off.txt
@@ -1,15 +1,18 @@
:8884
php_fastcgi localhost:9000 {
- # some php_fastcgi-specific subdirectives
- split .php .php5
- env VAR1 value1
- env VAR2 value2
- root /var/www
- index off
+ # some php_fastcgi-specific subdirectives
+ split .php .php5
+ env VAR1 value1
+ env VAR2 value2
+ root /var/www
+ index off
+ dial_timeout 3s
+ read_timeout 10s
+ write_timeout 20s
- # passed through to reverse_proxy (directive order doesn't matter!)
- lb_policy random
+ # passed through to reverse_proxy (directive order doesn't matter!)
+ lb_policy random
}
----------
{
@@ -39,16 +42,19 @@ php_fastcgi localhost:9000 {
}
},
"transport": {
+ "dial_timeout": 3000000000,
"env": {
"VAR1": "value1",
"VAR2": "value2"
},
"protocol": "fastcgi",
+ "read_timeout": 10000000000,
"root": "/var/www",
"split_path": [
".php",
".php5"
- ]
+ ],
+ "write_timeout": 20000000000
},
"upstreams": [
{
@@ -63,4 +69,4 @@ php_fastcgi localhost:9000 {
}
}
}
-} \ No newline at end of file
+}
diff --git a/modules/caddyhttp/reverseproxy/fastcgi/caddyfile.go b/modules/caddyhttp/reverseproxy/fastcgi/caddyfile.go
index 8228439..4d0b23b 100644
--- a/modules/caddyhttp/reverseproxy/fastcgi/caddyfile.go
+++ b/modules/caddyhttp/reverseproxy/fastcgi/caddyfile.go
@@ -40,6 +40,9 @@ func init() {
// split <at>
// env <key> <value>
// resolve_root_symlink
+// dial_timeout <duration>
+// read_timeout <duration>
+// write_timeout <duration>
// }
//
func (t *Transport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
@@ -69,8 +72,41 @@ func (t *Transport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
t.EnvVars[args[0]] = args[1]
case "resolve_root_symlink":
+ if d.NextArg() {
+ return d.ArgErr()
+ }
t.ResolveRootSymlink = true
+ case "dial_timeout":
+ if !d.NextArg() {
+ return d.ArgErr()
+ }
+ dur, err := caddy.ParseDuration(d.Val())
+ if err != nil {
+ return d.Errf("bad timeout value %s: %v", d.Val(), err)
+ }
+ t.DialTimeout = caddy.Duration(dur)
+
+ case "read_timeout":
+ if !d.NextArg() {
+ return d.ArgErr()
+ }
+ dur, err := caddy.ParseDuration(d.Val())
+ if err != nil {
+ return d.Errf("bad timeout value %s: %v", d.Val(), err)
+ }
+ t.ReadTimeout = caddy.Duration(dur)
+
+ case "write_timeout":
+ if !d.NextArg() {
+ return d.ArgErr()
+ }
+ dur, err := caddy.ParseDuration(d.Val())
+ if err != nil {
+ return d.Errf("bad timeout value %s: %v", d.Val(), err)
+ }
+ t.WriteTimeout = caddy.Duration(dur)
+
default:
return d.Errf("unrecognized subdirective %s", d.Val())
}
@@ -208,6 +244,42 @@ func parsePHPFastCGI(h httpcaddyfile.Helper) ([]httpcaddyfile.ConfigValue, error
dispenser.Delete()
}
fcgiTransport.ResolveRootSymlink = true
+
+ case "dial_timeout":
+ if !dispenser.NextArg() {
+ return nil, dispenser.ArgErr()
+ }
+ dur, err := caddy.ParseDuration(dispenser.Val())
+ if err != nil {
+ return nil, dispenser.Errf("bad timeout value %s: %v", dispenser.Val(), err)
+ }
+ fcgiTransport.DialTimeout = caddy.Duration(dur)
+ dispenser.Delete()
+ dispenser.Delete()
+
+ case "read_timeout":
+ if !dispenser.NextArg() {
+ return nil, dispenser.ArgErr()
+ }
+ dur, err := caddy.ParseDuration(dispenser.Val())
+ if err != nil {
+ return nil, dispenser.Errf("bad timeout value %s: %v", dispenser.Val(), err)
+ }
+ fcgiTransport.ReadTimeout = caddy.Duration(dur)
+ dispenser.Delete()
+ dispenser.Delete()
+
+ case "write_timeout":
+ if !dispenser.NextArg() {
+ return nil, dispenser.ArgErr()
+ }
+ dur, err := caddy.ParseDuration(dispenser.Val())
+ if err != nil {
+ return nil, dispenser.Errf("bad timeout value %s: %v", dispenser.Val(), err)
+ }
+ fcgiTransport.WriteTimeout = caddy.Duration(dur)
+ dispenser.Delete()
+ dispenser.Delete()
}
}
}