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
use
HTTP::Server::EV;
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
->
(
'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