aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/s3api/auth_signature_v4.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/weed/s3api/auth_signature_v4.go b/weed/s3api/auth_signature_v4.go
index f3b2720ee..c70027106 100644
--- a/weed/s3api/auth_signature_v4.go
+++ b/weed/s3api/auth_signature_v4.go
@@ -719,9 +719,11 @@ func extractHostHeader(r *http.Request) string {
forwardedHost := r.Header.Get("X-Forwarded-Host")
forwardedPort := r.Header.Get("X-Forwarded-Port")
+ forwardedProto := r.Header.Get("X-Forwarded-Proto")
// If X-Forwarded-Host is set, use that as the host.
// If X-Forwarded-Port is set, use that too to form the host.
+ // If X-Forwarded-Proto is set, check if is it default to omit the port.
if forwardedHost != "" {
extractedHost := forwardedHost
host, port, err := net.SplitHostPort(extractedHost)
@@ -731,7 +733,11 @@ func extractHostHeader(r *http.Request) string {
forwardedPort = port
}
}
- if !isDefaultPort(r.URL.Scheme, forwardedPort) {
+ scheme := r.URL.Scheme
+ if forwardedProto != "" {
+ scheme = forwardedProto
+ }
+ if !isDefaultPort(scheme, forwardedPort) {
extractedHost = net.JoinHostPort(extractedHost, forwardedPort)
}
return extractedHost