NAME
PAGI::Middleware::ReverseProxy - Handle X-Forwarded-* headers from reverse proxies
SYNOPSIS
use PAGI::Middleware::Builder;
my $app = builder {
enable 'ReverseProxy',
trusted_proxies => ['127.0.0.1', '10.0.0.0/8'];
$my_app;
};
DESCRIPTION
PAGI::Middleware::ReverseProxy processes X-Forwarded-* headers from trusted reverse proxies and updates the scope with the original client information.
CONFIGURATION
trusted_proxies (default: ['127.0.0.1', '::1'])
Arrayref of trusted proxy IP addresses or CIDR ranges.
trust_all (default: 0)
If true, trust X-Forwarded headers from any source. Use with caution!
HEADERS PROCESSED
X-Forwarded-For - Original client IP
X-Forwarded-Proto - Original protocol (http/https)
X-Forwarded-Host - Original Host header
X-Forwarded-Port - Original port
X-Real-IP - Alternative to X-Forwarded-For (nginx)
SCOPE MODIFICATIONS
When headers are processed from a trusted proxy:
client - Updated to original client [IP, port]
original_client - The proxy's [IP, port]
scheme - Updated to 'https' if X-Forwarded-Proto indicates
headers - Host header updated if X-Forwarded-Host present
server - Port updated if X-Forwarded-Port present
SECURITY
Only trust X-Forwarded headers from known reverse proxies. Never enable trust_all in production unless you fully understand the security implications.
SEE ALSO
PAGI::Middleware - Base class for middleware
PAGI::Middleware::HTTPSRedirect - HTTPS redirect