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