From de490c7cadc8c17759f747f5bb554967454c6529 Mon Sep 17 00:00:00 2001 From: ttys3 <41882455+ttys3@users.noreply.github.com> Date: Thu, 3 Mar 2022 02:24:16 +0800 Subject: [PATCH] fastcgi: Set SERVER_PORT to 80 or 443 depending on scheme (#4572) --- modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go b/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go index 5404424dd10..18d7e75b110 100644 --- a/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go +++ b/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go @@ -296,10 +296,15 @@ func (t Transport) buildEnv(r *http.Request) (envVars, error) { } // compliance with the CGI specification requires that - // SERVER_PORT should only exist if it's a valid numeric value. - // Info: https://www.ietf.org/rfc/rfc3875 Page 18 + // the SERVER_PORT variable MUST be set to the TCP/IP port number on which this request is received from the client + // even if the port is the default port for the scheme and could otherwise be omitted from a URI. + // https://tools.ietf.org/html/rfc3875#section-4.1.15 if reqPort != "" { env["SERVER_PORT"] = reqPort + } else if requestScheme == "http" { + env["SERVER_PORT"] = "80" + } else if requestScheme == "https" { + env["SERVER_PORT"] = "443" } // Some web apps rely on knowing HTTPS or not