[Moscow.pm] nginx + Catalyst + PSGI

Иван Соколов vaneska.ru на gmail.com
Пт Сен 30 00:21:42 PDT 2011


Добрый день!

Схема такая
frontend - nginx
backend - plackup -s Starman app.psgi --port 3000

Решить проблему с X-Real-IP удалость очень просто с помощью
Plack::Middleware::ReverseProxy
Но есть другая проблема.
Т.к. передается http запрос на backend, $c->request->base выдает схему http
и некоторые модули типа Catalyst::Controller::FormBuilder в form
action="" кладут http url.
Временно решил это так:
builder {
    enable_if { $_[0]->{REMOTE_ADDR} eq '127.0.0.1' }
        "Plack::Middleware::ReverseProxy";
     enable sub {
         my $app = shift;
         sub {
             my $env = shift;
             $env->{'psgi.url_scheme'} = 'https' if
$env->{HTTP_X_IS_SECURE} || $env->{HTTPS};
             $app->($env);
         }
     };
    $app;
};

Может есть какое-то более правильное решение?

-- 
С уважением,
Иван


Подробная информация о списке рассылки Moscow-pm