I have an NGINX server acting as a load-balancer for several other servers. Since I need access to the user's IP address, I added the following lines to my nginx configuration:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Then, in the backend servers, I simply use the first IP address in the X-Forwarded-For header. However, every few minutes (once every ~2K requests), I get unknown, xxx.xxx.xxx.xxx
as the value of the header, where xxx.xxx.xxx.xxx
is an IP address (a different one every time). What could be the source of this problem?
From the documentation, The $proxy_add_x_forwarded_for
variable consists of:
the “X-Forwarded-For” client request header field with the $remote_addr variable appended to it, separated by a comma.
If the “X-Forwarded-For” field is not present in the client request header, the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
From this we can conclude that nginx
received a request from some remote client (possibly a forward proxy) with a request header of:
X-Forwarded-For: unknown