Plack-Middleware-RealIP
view release on metacpan or search on metacpan
NAME
Plack::Middleware::RealIP - Override client IP with header value
provided by proxy/load balancer
SYNOPSIS
enable 'Plack::Middleware::RealIP',
header => 'X-Forwarded-For',
trusted_proxy => [qw(192.168.1.0/24 192.168.2.1)];
DESCRIPTION
Plack::Middleware::RealIP is loose port of the Apache module
mod_remoteip. It overrides "REMOTE_ADDR" with the IP address advertised
in the request header configured with "header".
When multiple, comma delimited IP addresses are listed in the header
value, they are processed from right to left. The first untrusted IP
address found, based on "trusted_proxy", stops the processing and is set
lib/Plack/Middleware/RealIP.pm view on Meta::CPAN
1;
=head1 NAME
Plack::Middleware::RealIP - Override client IP with header value provided by proxy/load balancer
=head1 SYNOPSIS
enable 'Plack::Middleware::RealIP',
header => 'X-Forwarded-For',
trusted_proxy => [qw(192.168.1.0/24 192.168.2.1)];
=head1 DESCRIPTION
Plack::Middleware::RealIP is loose port of the Apache module
mod_remoteip. It overrides C<REMOTE_ADDR> with the IP address advertised
in the request header configured with C<header>.
When multiple, comma delimited IP addresses are listed in the header
value, they are processed from right to left. The first untrusted IP
test_psgi $app, sub {
my $cb = shift;
my $res = $cb->(GET '/', %{ $proxy_header });
is $res->content, $expected;
};
}
run('1.2.3.4', {'X-Client-IP' => '9.8.7.6'}, 'X-Client-IP', '127.0.0.1', '1.2.3.4|9.8.7.6');
run('1.2.3.4', {'X-Client-IP' => '9.8.7.6'}, 'X-Client-IP', '1.2.3.4', '9.8.7.6|');
run('1.2.3.4', {'X-Client-IP' => '9.8.7.6'}, 'X-Forwarded-For', '1.2.3.4', '1.2.3.4|');
run('1.2.3.4', {'X-Client-IP' => '9.8.7.6'}, 'X-Forwarded-For', '127.0.0.1', '1.2.3.4|');
run('127.0.0.1', {'X-Forwarded-For' => '9.8.7.6'}, 'X-Forwarded-For', '127.0.0.1', '9.8.7.6|');
run('127.0.0.1', {'X-Forwarded-For' => '10.55.1.2, 9.8.7.6'}, 'X-Forwarded-For', '127.0.0.1', '9.8.7.6|10.55.1.2');
run('127.0.0.1', {'X-Forwarded-For' => '10.55.1.2, 9.8.7.6'}, 'X-Forwarded-For', ['127.0.0.1', '9.8/16'], '10.55.1.2|');
run('1.2.3.4', {'X-Forwarded-For' => '10.55.1.2, 9.8.7.6'}, 'X-Forwarded-For', ['127.0.0.1', '9.8/16'], '1.2.3.4|10.55.1.2, 9.8.7.6');
run('1.2.3.4', {'X-Forwarded-For' => '10.55.1.2, 9.8.7.6'}, 'X-Forwarded-For', ['127.0.0.1', '9.8/16', '10.55/16'], '1.2.3.4|10.55.1.2, 9.8.7.6');
run('1.2.3.4', {'X-Forwarded-For' => '10.55.1.2, 9.8.7.6'}, 'X-Forwarded-For', ['127.0.0.1', '9.8/16', '10.55/16', '1.2.3.4'], '1.2.3.4|');
done_testing;
( run in 0.440 second using v1.01-cache-2.11-cpan-4e96b696675 )