Re: как правильно написать правило proxy_redirect ?

Илья Шипицин chipitsine на gmail.com
Пн Авг 2 17:36:12 MSD 2010


у вас какая версия ? у меня 0.7.67 под Windows.
включил лог с отладкой - такой диагностики нет, как у вас (собственно,
ничего и не работает)

2 августа 2010 г. 17:01 пользователь Igor Sysoev <igor на sysoev.ru> написал:
> On Mon, Aug 02, 2010 at 04:55:10PM +0600, Илья Шипицин wrote:
>
>> общение между nginx и бэкендом идет по http на порту 8066, это так, в
>> редиректе бэкенд указывает
>>
>>
>> Location:  https://auth.kontur.ru/Authenticate.aspx?back=http%3a%2f%2fr66-extern.kontur.ru%3a8066%2fLogin.aspx
>>
>>
>> примерно до половины все правильно, после параметра ?back= идет текст,
>> который хочется поправить, чтобы получилось вот так
>>
>>
>> Location:  https://auth.kontur.ru/Authenticate.aspx?back=https%3a%2f%2fr66-extern.kontur.ru%2fLogin.aspx
>
> У меня заменяется:
>
> 2010/08/02 15:00:10 [debug] 29585#0: *1 http proxy header: "Location: https://auth.kontur.ru/Authenticate.aspx?back=http%3a%2f%2fr66-extern.kontur.ru%3a8066%2fLogin.aspx"
> 2010/08/02 15:00:10 [debug] 29585#0: *1 http proxy header done
> 2010/08/02 15:00:10 [debug] 29585#0: *1 rewritten location: "https://auth.kontur.ru/Authenticate.aspx?back=https%3a%2f%2fr66-extern.kontur.ru%2fLogin.aspx"
>
>
>> 2 августа 2010 г. 16:52 пользователь Igor Sysoev <igor на sysoev.ru> написал:
>> > On Mon, Aug 02, 2010 at 04:48:43PM +0600, Илья Шипицин wrote:
>> >
>> >> нет, поменять надо то, что идет параметром в ?back=....
>> >> протокол перед auth.kontur.ru должен остаться прежним, https
>> >
>> > Насколько я понимаю, бэкенд отвечает "http://..." или нет ?
>> >
>> >> 2 августа 2010 г. 16:46 пользователь Igor Sysoev <igor на sysoev.ru> написал:
>> >> > On Mon, Aug 02, 2010 at 04:36:05PM +0600, Илья Шипицин wrote:
>> >> >
>> >> >> Добрый день!
>> >> >>
>> >> >> есть вот такая связка
>> >> >>
>> >> >> внешний мир ---(https)---->nginx---(http на порту 8066)--->backend
>> >> >>
>> >> >> на один из запросов от бэкенда прилетает
>> >> >>
>> >> >> Location:  https://auth.kontur.ru/Authenticate.aspx?back=http%3a%2f%2fr66-extern.kontur.ru%3a8066%2fLogin.aspx
>> >> >>
>> >> >> как видим, здесь указан порт 8066 и протокол http. хотелось бы подменить его на
>> >> >>
>> >> >> Location:  https://auth.kontur.ru/Authenticate.aspx?back=https%3a%2f%2fr66-extern.kontur.ru%2fLogin.aspx
>> >> >>
>> >> >> конфиг я нарисовал такой:
>> >> >>
>> >> >> ------------------------------------------------------------------------------------------
>> >> >> worker_processes  1;
>> >> >>
>> >> >> error_log  logs/error.log  notice;
>> >> >>
>> >> >> events {
>> >> >>     worker_connections  2048;
>> >> >> }
>> >> >>
>> >> >>
>> >> >> http {
>> >> >>     server_tokens off;
>> >> >>     include       mime.types;
>> >> >>     default_type  application/octet-stream;
>> >> >>
>> >> >>     access_log  logs/access.log  combined;
>> >> >>
>> >> >>     sendfile        on;
>> >> >>     keepalive_timeout  65;
>> >> >>
>> >> >>     server {
>> >> >>         listen       443  default backlog=1024 ssl;
>> >> >>         server_name  localhost;
>> >> >>
>> >> >>         ssl                  on;
>> >> >>         ssl_certificate      cert.pem;
>> >> >>         ssl_certificate_key  key.pem;
>> >> >>
>> >> >>         ssl_session_timeout  5m;
>> >> >>
>> >> >>         ssl_protocols  SSLv2 SSLv3 TLSv1;
>> >> >>         ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
>> >> >>         ssl_prefer_server_ciphers   on;
>> >> >>
>> >> >>         location / {
>> >> >>             proxy_pass http://vm-keweb5:8066;
>> >> >>             proxy_cache off;
>> >> >>             proxy_connect_timeout 500;
>> >> >>             proxy_send_timeout 500;
>> >> >>             proxy_read_timeout 500;
>> >> >>             proxy_redirect
>> >> >> https://auth.kontur.ru/Authenticate.aspx?back=http%3a%2f%2fr66-extern.kontur.ru%3a8066%2fLogin.aspx
>> >> >> https://auth.kontur.ru/Authenticate.aspx?back=https%3a%2f%2fr66-extern.kontur.ru%2fLogin.aspx;
>> >> >>         }
>> >> >>     }
>> >> >>
>> >> >> }
>> >> >> ---------------------------------------------------------------
>> >> >>
>> >> >> судя по сниферу (и по ответам http), подмена ответа не происходит. как
>> >> >> это можно диагностировать ? в чем я ошибся ?
>> >> >
>> >> >             proxy_redirect
>> >> > - https://auth.kontur.ru/...
>> >> > + http://auth.kontur.ru/...
>> >> >  https://auth.kontur.ru/...
>> >> >
>> >> >
>> >> > --
>> >> > Игорь Сысоев
>> >> > http://sysoev.ru
>> >> >
>> >> > _______________________________________________
>> >> > nginx-ru mailing list
>> >> > nginx-ru на nginx.org
>> >> > http://nginx.org/mailman/listinfo/nginx-ru
>> >> >
>> >> _______________________________________________
>> >> nginx-ru mailing list
>> >> nginx-ru на nginx.org
>> >> http://nginx.org/mailman/listinfo/nginx-ru
>> >
>> > --
>> > Игорь Сысоев
>> > http://sysoev.ru
>> >
>> > _______________________________________________
>> > nginx-ru mailing list
>> > nginx-ru на nginx.org
>> > http://nginx.org/mailman/listinfo/nginx-ru
>> >
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://nginx.org/mailman/listinfo/nginx-ru
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>



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