context: set client network address without original port on backend-ip-header option
This commit is contained in:
@@ -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 {
|
||||
|
@@ -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)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user