wiki.nginx.org/EmbeddedPerlModule
Как-то так (не тестировал, но должно вроде работать):
nginx.conf:
http {
perl_require myhandler.pm;
...
server {
...
location ~* /original/\.(gif|jpg|png)$ {
perl myhandler::handler;
}
}
}
myhandler.pm:
package myhandler;
use nginx;
use Digest::MD5 qw(md5_hex);
sub handler {
my $r = shift;
if ($r->filename=~m|/original/(.*?)\.(jpg|gif|png)|) {
my $id_md5=md5_hex($1);
my $filename="/original/".substr($id_md5,31,1)."/".substr($id_md5,0,2)."/".substr($id_md5,2,2).".".$2;
$r->sendfile($filename);
}
return OK;
}
1;
__END__