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.456 second using v1.01-cache-2.11-cpan-a1d94b6210f )