HAProxy - how to append client ip in X-Client-IP and X-Forwarded-For headers?

I have a problem with HAProxy server. I want to forward in header a client IP. I almost done it, but there is interesting case and I can't figure it out. I need to write client IP in 2 places in header, in X-CLIENT-IP and X-FORWARDED-FOR tag's.

The problem is: When I use

option http-server-close
option forwardfor

On target server I see in header X-FORWARDED-FOR=xxx.xxx.xxx.xxx(client ip) but there is no x-client-ip header.

When I use:

option forwardfor header X-Client-IP
option http-server-close

On target server I see header X-CLIENT-IP=xxx.xxx.xxx(client IP) but X-FORWARDED-FOR=xxx.xxx.xxx.xxx(HAProxy ip)

I need to see on target header where X-CLIENT-IP and X-FORWARDED-FOR has value of client IP.

I try to mix configurations like

 option forwardfor
 option forwardfor header X-Client-IP
 option http-server-close

No efect. I can not also install any modules. The target is IIS.

Any ideas? :(


You can try setting up custom header, like this:

http-request set-header X-Client-IP %[src]

Or, you can even copy it from X-Forwarded-For header, I think syntax would go something like:

http-request set-header X-Client-IP req.hdr_ip([X-Forwarded-For])

If you want to use both, you'll need to add the second with an http-request keyword.

# add X-FORWARDED-FOR
option forwardfor
# add X-CLIENT-IP
http-request add-header X-CLIENT-IP %[src]

Suggested answer above that did not work for KacproSo just needed to read the value by adding &[...], so this should work fine:

http-request set-header X-Client-IP %[req.hdr_ip([X-Forwarded-For])]