From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

NAME

HTTP::Server::EV::ServeStatic - Simple static file server.

DESCRIPTION

Simple static file server for HTTP::Server::EV. This module good for testing apps without frontend server. It's blocking and reads entire file into memory, so if you going to serve big files and need good performance - use frontend servers like nginx or lighttpd.

SYNOPSIS

my $static_server = HTTP::Server::EV::ServeStatic->new({
basedir => './html',
indexes => [qw/index.html index.xhml default.html/],
forbidden_ext => [qw/pm pl php conf ini/],
rewrite_cb => sub {
local($_) = @_;
s/foo/bar/; # /path/foo/file.txt -> /path/bar/file.txt
return $_;
}
});
# or defaults
my $static_server = HTTP::Server::EV::ServeStatic->new;
HTTP::Server::EV->new->listen( 8080 , sub{
my ($cgi) = @_;
$static_server->serve($cgi); # try serve file.
# or give control to your app if file not found
$cgi->header({ STATUS => '404 Not Found' });
$cgi->print('404 - File not found');
});
EV::run;

METHODS

new( { options } )

basedir

Directory with files. Dafault './'

indexes

Files to search for if no file specified in url. Arrayref. Default [qw/index.html/]

forbidden_ext

Don't serve files with those extensions. Arrayref. Default [qw/pm pl/]

rewrite_cb

Callback for rewriting uri before processing request. Gets uri as first arg and need to return new uri.

serve( $http_server_ev_cgi_obj )

Process request