Re: Неправильный порт в редиректах

Igor Sysoev igor на sysoev.ru
Чт Янв 28 14:12:40 MSK 2010


On Tue, Jan 19, 2010 at 03:04:54PM -0500, Ruslan wrote:

> Использую nginx как фронтенд, tomcat за backend. Фронтенд висит на 8111, бэкенд на 8180. Все хорошо, но когда томкат отдает 302 redirect, джинкс почему-то пребрасывает его на стандартный 80-й порт. Т.е. томкат отдает Location: http://localhost:8180/wicket/index, что на выходе с nginx становится http://www.my.site/wicket/index -- хотя, повторяю, джинкс висит на 8111 порту.
> 
> конфиг:
> 
> location / {
>                 rewrite                 /flowplayer/(.*)        /flowplayer/$1  break;
>                 rewrite                 /pages/(.*)             /pages/$1       break;
>                 rewrite                 /wicket/(.*)            /wicket/$1      break;
>                 rewrite                 /(.*)                   /wicket/$1      break;
> 
>                 proxy_pass         http://localhost:8180/;
>                 #proxy_redirect     http://localhost:8180/ http://$host:$server_port/;
>                 #proxy_redirect         default;
>                 #proxy_redirect         off;
>                 proxy_redirect          http://localhost:8180/          http://$host:8111/;
>                 proxy_redirect          http://www.tvintime.info:8180/  http://$host:8111/;
>                 proxy_redirect          http://tvintime.info:8180/      http://$host:8111/;
>                 proxy_redirect          http://localhost/               http://$host:8111/;
>                 proxy_redirect          /       /;
> 
>                 #port_in_redirect        off;
> 
>                 proxy_set_header   Host             $host;
>                 ....
> }
> 
> 
> закоментированные и раскоментированные варианты proxy_redirect я перепробовал в самых разных комбинациях. 
> 
> Сталкивался кто-нибудь с таким? Чем лечится?

А что это за кошмар с rewrite'ами ? От RewriteRule'ов нужно отвыкать, да.

    proxy_set_header   Host    $host;
    port_in_redirect   on;
    proxy_redirect     http://localhost:8180/   /;

    location / {
        proxy_pass         http://localhost:8180/wicket/;
    } 

    location /wicket/ {
        proxy_pass         http://localhost:8180;
    } 

    location /pages/ {
        proxy_pass         http://localhost:8180;
    } 

    location /flowplayer/ {
        proxy_pass         http://localhost:8180;
    } 


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



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