Nginx removes X-Client-IP header added by loadbalancer

Maxim Dounin mdounin at
Mon Dec 10 00:47:08 UTC 2012


On Sat, Dec 08, 2012 at 01:20:12PM -0500, mrtn wrote:

> Hi,
> I have a HAProxy running in front of Nginx, and I add 'X-Client-IP' header
> to reflect the actual IP of the client. If the request is routed directly to
> the application server (Tornado in my case), this header is present and I
> can retrieve it with no problem.
> However, if the request is first routed to Nginx and then to the application
> server using: 
> proxy_pass    ;
> proxy_redirect          off;
> then the 'X-Client-IP' header is missing from the request when it reaches
> Tornado. I guess I might need to explicitly add this header in Nginx as
> well, so it can relay it on. What is the right solution here?

Most likely your balancer adds something like "X-Client_IP" instead, 
with "_"  (underscore) instead of "-" (dash).  Such headers are 
removed by nginx by default unless explicitly allowed, see

You may either enable such headers in nginx (see above, but not 
recommended), or (better) change "_" to "-" in your balancer 

Maxim Dounin

More information about the nginx mailing list