mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-28 21:06:01 +03:00
fastcgi: Add resolve_root_symlink (#3587)
This commit is contained in:
parent
e9b1d7dcb4
commit
2ae8c11927
2 changed files with 27 additions and 0 deletions
|
@ -39,6 +39,7 @@ func init() {
|
||||||
// root <path>
|
// root <path>
|
||||||
// split <at>
|
// split <at>
|
||||||
// env <key> <value>
|
// env <key> <value>
|
||||||
|
// resolve_root_symlink
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
func (t *Transport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
func (t *Transport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
||||||
|
@ -67,6 +68,9 @@ func (t *Transport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
||||||
}
|
}
|
||||||
t.EnvVars[args[0]] = args[1]
|
t.EnvVars[args[0]] = args[1]
|
||||||
|
|
||||||
|
case "resolve_root_symlink":
|
||||||
|
t.ResolveRootSymlink = true
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return d.Errf("unrecognized subdirective %s", d.Val())
|
return d.Errf("unrecognized subdirective %s", d.Val())
|
||||||
}
|
}
|
||||||
|
@ -196,6 +200,14 @@ func parsePHPFastCGI(h httpcaddyfile.Helper) ([]httpcaddyfile.ConfigValue, error
|
||||||
return nil, dispenser.ArgErr()
|
return nil, dispenser.ArgErr()
|
||||||
}
|
}
|
||||||
indexFile = args[0]
|
indexFile = args[0]
|
||||||
|
|
||||||
|
case "resolve_root_symlink":
|
||||||
|
args := dispenser.RemainingArgs()
|
||||||
|
dispenser.Delete()
|
||||||
|
for range args {
|
||||||
|
dispenser.Delete()
|
||||||
|
}
|
||||||
|
fcgiTransport.ResolveRootSymlink = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,14 @@ type Transport struct {
|
||||||
// that 404s if the fastcgi path info is not found.
|
// that 404s if the fastcgi path info is not found.
|
||||||
SplitPath []string `json:"split_path,omitempty"`
|
SplitPath []string `json:"split_path,omitempty"`
|
||||||
|
|
||||||
|
// Path declared as root directory will be resolved to its absolute value
|
||||||
|
// after the evaluation of any symbolic links.
|
||||||
|
// Due to the nature of PHP opcache, root directory path is cached: when
|
||||||
|
// using a symlinked directory as root this could generate errors when
|
||||||
|
// symlink is changed without php-fpm being restarted; enabling this
|
||||||
|
// directive will set $_SERVER['DOCUMENT_ROOT'] to the real directory path.
|
||||||
|
ResolveRootSymlink bool `json:"resolve_root_symlink,omitempty"`
|
||||||
|
|
||||||
// Extra environment variables.
|
// Extra environment variables.
|
||||||
EnvVars map[string]string `json:"env,omitempty"`
|
EnvVars map[string]string `json:"env,omitempty"`
|
||||||
|
|
||||||
|
@ -179,6 +187,13 @@ func (t Transport) buildEnv(r *http.Request) (map[string]string, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if t.ResolveRootSymlink {
|
||||||
|
root, err = filepath.EvalSymlinks(root)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fpath := r.URL.Path
|
fpath := r.URL.Path
|
||||||
|
|
||||||
// split "actual path" from "path info" if configured
|
// split "actual path" from "path info" if configured
|
||||||
|
|
Loading…
Reference in a new issue