Nginx::Module::Gallery - Gallery perl module for nginx. Like simple file index but thumbnail replace default icon for image.


Example of nginx http section:

        # Path to
        perl_modules  /usr/share/perl5/;
        perl_require  Nginx/Module/;

Example of nginx server section:

    server {
        listen                  80;

        server_name             gallery.localhost;

        location / {
            perl  Nginx::Module::Gallery::handler;
            # Path to image files
            root /usr/share/images;


This module not for production servers! But for single user usage. Gallery don`t use nginx event machine, so one nginx worker per connect (typically 8) used for slow create thumbnails!

All thumbnails cached on first request. Next show will be more fast.



index $r

Directory index handler

archive $r

Online archive response



Send image to client


Send directory index to client. Try do it like event base, but use sleep.


Send index item to client, or init send index bottom.


Sent archive file to client

get_icon_form_cache $path

Check icon for image by $path in cache and return it if exists

update_icon_in_cache $path, $uri, $mime

Get $path and $uri of image and make icon for it


_get_video_thumb $path

Get raw thumbnail data for video file by it`s $path

_get_image_thumb $path

Get raw thumbnail data for image file by it`s $path

_get_image_thumb $path

Get raw thumbnail data for icon file by it`s $path

_save_thumb $icon

Save $icon in cache

_template $name

Retrun template my $name

_icon_mime $path

Return mime icon for file by $path


converts big numbers to small 1024 = 1K, 1024**2 == 1M, etc

_get_md5_image $path

Return unque MD5 hex string for image file by it`s $path

_escape_path $path

Return escaped $path

_escape_url @path

Return escaped uri for list of @path partitions

_get_variables $r

Get configuration variables from request $r

_make_title $url

Make title from url


Copyright (C) 2012 Dmitry E. Oboukhov <>,

Copyright (C) 2012 Roman V. Nikolaev <>


This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <>.