context: set client network address without original port on backend-ip-header option

This commit is contained in:
WeebDataHoarder
2025-05-03 22:32:25 +02:00
parent 816d0fef90
commit aebbfa4eaa
2 changed files with 7 additions and 7 deletions

View File

@@ -350,7 +350,7 @@ func (d *RequestData) RequestHeaders(headers http.Header) {
if d.State.Settings().ClientIpHeader != "" {
headers.Del(d.State.Settings().ClientIpHeader)
}
headers.Set(d.State.Settings().BackendIpHeader, d.RemoteAddress.String())
headers.Set(d.State.Settings().BackendIpHeader, d.RemoteAddress.Addr().Unmap().String())
}
for id, result := range d.ChallengeVerify {

View File

@@ -106,6 +106,12 @@ func (b Backend) Create() (*httputil.ReverseProxy, error) {
if b.IpHeader != "" || b.Host != "" || !b.Transparent {
director := proxy.Director
proxy.Director = func(req *http.Request) {
if !b.Transparent {
if data := challenge.RequestDataFromContext(req.Context()); data != nil {
data.RequestHeaders(req.Header)
}
}
if b.IpHeader != "" && !b.Transparent {
if ip := utils.GetRemoteAddress(req.Context()); ip != nil {
req.Header.Set(b.IpHeader, ip.Addr().Unmap().String())
@@ -114,12 +120,6 @@ func (b Backend) Create() (*httputil.ReverseProxy, error) {
if b.Host != "" {
req.Host = b.Host
}
if !b.Transparent {
if data := challenge.RequestDataFromContext(req.Context()); data != nil {
data.RequestHeaders(req.Header)
}
}
director(req)
}
}