ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Пример для mod_perl



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



 




Copyright © Lexa Software, 1996-2009.