HAProxy – How to Append Client IP in X-Client-IP and X-Forwarded-For Headers

haproxy

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? 🙁

Best Answer

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])