Skip to content

Commit

Permalink
Merge pull request #860 from bn0ir/fix-ws-x-forwarded-for
Browse files Browse the repository at this point in the history
Fix x-forwarded-for header processing for ws connections
  • Loading branch information
nathanejohnson committed May 6, 2022
2 parents 3677770 + e483a1b commit 22e41e4
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion proxy/http_headers.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,18 @@ func addHeaders(r *http.Request, cfg config.Proxy, stripPath string) error {
// http proxy which sets it.
ws := r.Header.Get("Upgrade") == "websocket"
if ws {
r.Header.Set("X-Forwarded-For", remoteIP)
clientIP := remoteIP
// If we aren't the first proxy retain prior
// X-Forwarded-For information as a comma+space
// separated list and fold multiple headers into one.
prior, ok := r.Header["X-Forwarded-For"]
omit := ok && prior == nil // Issue 38079: nil now means don't populate the header
if len(prior) > 0 {
clientIP = strings.Join(prior, ", ") + ", " + clientIP
}
if !omit {
r.Header.Set("X-Forwarded-For", clientIP)
}
}

// Issue #133: Setting the X-Forwarded-Proto header to
Expand Down

0 comments on commit 22e41e4

Please sign in to comment.