Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: ModPerl: ModPerl

$r->connection->remote_ip with proxy and non proxy env

 

 

ModPerl modperl RSS feed   Index | Next | Previous | View Threaded


cfaust at doyougot

Oct 6, 2008, 8:51 AM

Post #1 of 3 (365 views)
Permalink
$r->connection->remote_ip with proxy and non proxy env

Folks,

I'm guessing this has been answered but I couldn't find it.

We need to do some IP checking and need to support it on both a load balanced environment and in a dedicated machine setup.

In the load balanced situation $r->connection->remote_ip returns 1 - Is that correct and consistent so I can use it to switch between how I get the IP address?

In other words should I be doing something like

if ($r->connection->remote_ip == 1)
my $ip = $r->headers_in->{'X-Forwarded-For'}
} else {
my $ip = $r->connection->remote_ip;
}

Or is there a better way?

TIA!
-Chris


fred at redhotpenguin

Oct 8, 2008, 10:06 AM

Post #2 of 3 (320 views)
Permalink
Re: $r->connection->remote_ip with proxy and non proxy env [In reply to]

cfaust-dougot wrote:
> Folks,
>
> I'm guessing this has been answered but I couldn't find it.
>
> We need to do some IP checking and need to support it on both a load
> balanced environment and in a dedicated machine setup.
>
> In the load balanced situation $r->connection->remote_ip returns 1 - Is
> that correct and consistent so I can use it to switch between how I get
> the IP address?
>
> In other words should I be doing something like
>
> if ($r->connection->remote_ip == 1)
> my $ip = $r->headers_in->{'X-Forwarded-For'}
> } else {
> my $ip = $r->connection->remote_ip;
> }
>
> Or is there a better way?

That seems like a good approach but I don't understand why 1 would be
returned as the remote_ip. Of course, you will want to scope 'my $ip
outside of the conditional so that you can use it elsewhere.

You could also do something like:

if (my $ip = $r->headers_in->{'X-Forwarded-For'}) {

$r->connection->remote_ip( $ip );
}

>
> TIA!
> -Chris
>
>


jansen at hbz-nrw

Oct 9, 2008, 12:23 AM

Post #3 of 3 (318 views)
Permalink
Re: $r->connection->remote_ip with proxy and non proxy env [In reply to]

Am Mittwoch, den 08.10.2008, 10:06 -0700 schrieb Fred Moyer:

> You could also do something like:
>
> if (my $ip = $r->headers_in->{'X-Forwarded-For'}) {
>
> $r->connection->remote_ip( $ip );
> }

But (as I learned the hard way long ago) you should check the value of
the X-Forwarded-For header: On its way to you the request might have
passed other proxys which could also have contributed to that header
(putting anything in there from internal IPs to the string
"unknown"...).
IIRC, a frontend Apache proxy on your side appends (not prepends) the
remote ip it saw to the header (separated by ", ").

Heiko

ModPerl modperl RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.