diff options
author | Runxi Yu <me@runxiyu.org> | 2025-03-22 20:55:25 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-03-22 20:55:25 +0800 |
commit | 2c71f995b73774d5b910d49a024e51c4ac902f3a (patch) | |
tree | 34642fce293e62352e6b75aa92217afaae7319a9 /http_server.go | |
parent | Configurable timeout (diff) | |
download | forge-2c71f995b73774d5b910d49a024e51c4ac902f3a.tar.gz forge-2c71f995b73774d5b910d49a024e51c4ac902f3a.tar.zst forge-2c71f995b73774d5b910d49a024e51c4ac902f3a.zip |
Support X-Forwarded-For for reverse proxies
Diffstat (limited to 'http_server.go')
-rw-r--r-- | http_server.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/http_server.go b/http_server.go index c86dae6..6531748 100644 --- a/http_server.go +++ b/http_server.go @@ -16,7 +16,18 @@ import ( type forgeHTTPRouter struct{} func (router *forgeHTTPRouter) ServeHTTP(writer http.ResponseWriter, request *http.Request) { - clog.Info("Incoming HTTP: " + request.RemoteAddr + " " + request.Method + " " + request.RequestURI) + var remoteAddr string + if config.HTTP.ReverseProxy { + remoteAddrs, ok := request.Header["X-Forwarded-For"] + if ok && len(remoteAddrs) == 1 { + remoteAddr = remoteAddrs[0] + } else { + remoteAddr = request.RemoteAddr + } + } else { + remoteAddr = request.RemoteAddr + } + clog.Info("Incoming HTTP: " + remoteAddr + " " + request.Method + " " + request.RequestURI) var segments []string var err error |