Пример для mod_perl

Igor Sysoev is at rambler-co.ru
Mon Jan 23 23:13:01 MSK 2006


On Mon, 23 Jan 2006, Andrew Velikoredchanin wrote:

> Игорь, а можно-ли на mod_perl в nginx реализовать эмуляцию проверки наличия 
> файла и в зависимости от этого либо выдавать его напрямую (не из perl, а 
> средствами nginx), или обращаться на бэкэнд? Т.е. может-ли mod_perl в nginx 
> выступать в качестве эдакого диспетчера, который принимает решение откуда 
> нужна брать данный конкретный контент?

     location / {
         perl  example::handler;
     }

     location /static/ {
         alias  /path/to/files/;
     }

     location /proxied/ {
         proxy_pass   http://127.0.0.1/;
     }

------------

package example;

use strict;
use nginx;

sub handler {
     my $r = shift;

     my $uri = (-f $r->filename ? "/static" : "/proxied") . $r->uri;

     $r->internal_redirect($uri);

     return OK;
}

--------------

или вот так:

--------------

sub handler {
     my $r = shift;

     my $file = $r->filename;

     if (! -f $file) {
         $r->internal_redirect("/proxied" . $r->$uri);
         return OK;
     }

     $r->header_out("Content-Length", -s _);
     $r->send_http_header;
     return OK if $r->header_only;

     $r->sendfile($file);

     return OK;
}


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list