use Plack::App::CGIBin; use Plack::App::PHPCGIFile; use Plack::Builder; use Plack::Builder::Conditionals; my $cgibin = Plack::App::CGIBin->new( root => "/usr/local/nagios/sbin", exec_cb => sub { my $file = shift; $file =~ m!\.cgi$! and -x $file }, )->to_app; my $htdocs = Plack::App::PHPCGIFile->new( root => '/usr/local/nagios/share' )->to_app; builder { enable match_if addr([qw!127.0.0.1!]), 'ReverseProxy'; enable sub { my $apps = shift; sub { my $env = shift; return [302,[Location=>'http://'.$env->{HTTP_HOST}.'/nagios/'],['moved']] if $env->{PATH_INFO} =~ m!^/(nagios)?$!; $env->{REMOTE_USER} = 'nagiosadmin'; $env->{PATH_INFO} .= 'index.php' if $env->{PATH_INFO} =~ m!^/nagios/([^\.]+/)*$!; $apps->($env); }; }; mount '/nagios/cgi-bin' => $cgibin, mount '/nagios' => $htdocs, }