mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-06 22:40:31 -05:00
fastcgi: Fix SCRIPT_NAME when path in address (#1852)
* Add tests for SCRIPT_NAME * fastcgi: Include vhost path prefix in SCRIPT_NAME
This commit is contained in:
parent
129efde9b0
commit
10484cfad2
2 changed files with 21 additions and 1 deletions
|
@ -18,6 +18,7 @@ import (
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/mholt/caddy"
|
||||||
"github.com/mholt/caddy/caddyhttp/httpserver"
|
"github.com/mholt/caddy/caddyhttp/httpserver"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -248,6 +249,11 @@ func (h Handler) buildEnv(r *http.Request, rule Rule, fpath string) (map[string]
|
||||||
// Strip PATH_INFO from SCRIPT_NAME
|
// Strip PATH_INFO from SCRIPT_NAME
|
||||||
scriptName = strings.TrimSuffix(scriptName, pathInfo)
|
scriptName = strings.TrimSuffix(scriptName, pathInfo)
|
||||||
|
|
||||||
|
// Add vhost path prefix to scriptName. Otherwise, some PHP software will
|
||||||
|
// have difficulty discovering its URL.
|
||||||
|
pathPrefix, _ := r.Context().Value(caddy.CtxKey("path_prefix")).(string)
|
||||||
|
scriptName = path.Join(pathPrefix, scriptName)
|
||||||
|
|
||||||
// Get the request URI from context. The context stores the original URI in case
|
// Get the request URI from context. The context stores the original URI in case
|
||||||
// it was changed by a middleware such as rewrite. By default, we pass the
|
// it was changed by a middleware such as rewrite. By default, we pass the
|
||||||
// original URI in as the value of REQUEST_URI (the user can overwrite this
|
// original URI in as the value of REQUEST_URI (the user can overwrite this
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/mholt/caddy"
|
||||||
"github.com/mholt/caddy/caddyhttp/httpserver"
|
"github.com/mholt/caddy/caddyhttp/httpserver"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -122,7 +123,11 @@ func TestBuildEnv(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rule := Rule{}
|
rule := Rule{
|
||||||
|
Ext: ".php",
|
||||||
|
SplitPath: ".php",
|
||||||
|
IndexFiles: []string{"index.php"},
|
||||||
|
}
|
||||||
url, err := url.Parse("http://localhost:2015/fgci_test.php?test=foobar")
|
url, err := url.Parse("http://localhost:2015/fgci_test.php?test=foobar")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Unexpected error:", err.Error())
|
t.Error("Unexpected error:", err.Error())
|
||||||
|
@ -156,6 +161,7 @@ func TestBuildEnv(t *testing.T) {
|
||||||
"QUERY_STRING": "test=foobar",
|
"QUERY_STRING": "test=foobar",
|
||||||
"REQUEST_METHOD": "GET",
|
"REQUEST_METHOD": "GET",
|
||||||
"HTTP_HOST": "localhost:2015",
|
"HTTP_HOST": "localhost:2015",
|
||||||
|
"SCRIPT_NAME": "/fgci_test.php",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,6 +212,14 @@ func TestBuildEnv(t *testing.T) {
|
||||||
envExpected["CUSTOM_URI"] = "custom_uri/fgci_test.php?test=foobar"
|
envExpected["CUSTOM_URI"] = "custom_uri/fgci_test.php?test=foobar"
|
||||||
envExpected["CUSTOM_QUERY"] = "custom=true&test=foobar"
|
envExpected["CUSTOM_QUERY"] = "custom=true&test=foobar"
|
||||||
testBuildEnv(r, rule, fpath, envExpected)
|
testBuildEnv(r, rule, fpath, envExpected)
|
||||||
|
|
||||||
|
// 6. Test SCRIPT_NAME includes path prefix
|
||||||
|
r = newReq()
|
||||||
|
ctx := context.WithValue(r.Context(), caddy.CtxKey("path_prefix"), "/test")
|
||||||
|
r = r.WithContext(ctx)
|
||||||
|
envExpected = newEnv()
|
||||||
|
envExpected["SCRIPT_NAME"] = "/test/fgci_test.php"
|
||||||
|
testBuildEnv(r, rule, fpath, envExpected)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadTimeout(t *testing.T) {
|
func TestReadTimeout(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue