Hi all,

Recently I have to deal with a number of modules that try to override the r->connection->remote_ip value in order to use the IP address originating from a load balancer, which obscures the real IP address of the client.

All of these modules, including mod_remoteip in trunk, take a piece of information from a request (a header value typically), and then copies the value upstream to the parent connection, blowing away the real value of the IP address.

This blown away IP address now becomes the IP address for all further requests on the same connection, which, if they are coming from a load balancer, are very unlikely to come from the same original client.

A request should not be making permanent changes to its parent connection, even a temporary change with a cleanup to restore the original value is an ugly hack.

ideally there should be a value r->remote_ip, populated initially from connection->remote_ip, which a request can change at will, and that will go away when the request is finished. Modules that want to do access control, etc should rather look in r->remote_ip instead of r- >connection->remote_ip.

The change is simple enough, but changes a number of modules, so I would like to make sure people agree with the approach before I go ahead.

Any comments?

Regards,
Graham
--

Reply via email to