Очень даже заглядывал, но иногда смотришь в книгу, а видишь фигу )) В конфиге nginx было proxy_set_header X-Forwarded-Https 1;
30 сентября 2011 г. 11:34 пользователь iSage <[email protected]> написал: > Иногда очень полезно заглядывать в исходники того, что вы используете. > Plack::Middleware::ReverseProxy: > > $env->{HTTPS} = $env->{'HTTP_X_FORWARDED_HTTPS'} > if $env->{'HTTP_X_FORWARDED_HTTPS'}; > $env->{HTTPS} = 'ON' > if $env->{'HTTP_X_FORWARDED_PROTO'} && > $env->{'HTTP_X_FORWARDED_PROTO'} eq 'https'; # Pound > $env->{'psgi.url_scheme'} = 'https' if $env->{HTTPS} && uc > $env->{HTTPS} eq 'ON'; > my $default_port = $env->{'psgi.url_scheme'} eq 'https' ? 443 : 80; > > > > > On Fri, 30 Sep 2011 11:21:42 +0400, Иван Соколов <[email protected]> > wrote: >> Добрый день! >> >> Схема такая >> 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 mailing list > [email protected] | http://moscow.pm.org > -- С уважением, Иван -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
