nginx & internal & redirect

BieZax nginx-forum at nginx.us
Tue Aug 26 09:19:16 UTC 2014


Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
> 
> On Mon, Aug 25, 2014 at 10:51:50AM -0400, BieZax wrote:
> 
> [...]
> 
> > Добрый  день!
> > Захотелось мне  авторизовываться  через  mysql, нормальных  модулей 
> не 
> > нашел и нарисовал  свой  костыль  в виде  перлового  демона, 
> который 
> > слушает  на  порту 8080  и  в случае удачной авторизации возвращает
> > `"X-Accel-Redirect: /ok" .  $url`. В  конфиге   nginx   эта
> конструкция 
> > выглядит  следующим образом:
> 
> Just a side note: есть auth_request, которой делает приблизительно 
> то же самое, но чуть удобнее с точки зрения конфигурирования.  
> Подробнее тут:
> 
> http://nginx.org/ru/docs/http/ngx_http_auth_request_module.html
> 
> >       location /test/ {
> >                 proxy_set_header X-CAuth-Realm "test";
> >                 proxy_set_header X-CAuth-Base "test";
> >                 proxy_set_header X-CAuth-Table "test";
> >                 proxy_set_header X-CAuth-GField "test";
> >                 proxy_set_header X-CAuth-PassF "password";
> >                 proxy_set_header Host $host;
> >                 proxy_set_header X-Real-IP       $remote_addr;
> >                 proxy_set_header X-Forwarded-Host $host;
> >                 proxy_set_header X-Forwarded-Server $host;
> >                 proxy_set_header X-Forwarded-For
> > $proxy_add_x_forwarded_for;
> >                 proxy_pass http://127.0.0.1:8080;
> >         }
> > 
> >         location  /ok/test/ {
> >                 internal;
> >                 proxy_pass https://hostname/test2/;
> >                 proxy_redirect   https://hostname/test2/  /ok/test/;
> >         }
> >         location /test2/ {
> > #               rewrite  ^/test2/$  /test2/qwe.pl redirect;
> >                 proxy_pass  http://127.0.0.1:8081/test/;
> >                 proxy_redirect  http://127.0.0.1:8081/test/
> /ok/test/;
> >         }
> > И все прекрасно  работало,  пока  не появился редирект(закоменчен). 
> После
> > попадания   в редирект  меня перекидывает   сюда
> http://ok/test/qwe.pl. 
> > Никак не могу понять, откуда берется "ок", может кто-то сможет мне
> > подсказать ?
> 
> Если берётся сразу после "http://", то это должно быть имя хоста 
> из заголовка Host или server_name.
> 
> Вообще, судя по конфигу, должен возвращаться редиркет на 
> "http://<hostname>/ok/test/qwe.pl":
> 
> - запрос к "/ok/test/" проксируется на https://hostname/test2/;
> 
> - rewrite в "location /test2/" возвращает перенаправление на 
>   "/test2/qwe.pl" (+ "https://hostname");
> 
> - proxy_redirect в "location /ok/test/" заменяет префикс 
>   "https://hostname/test2/" на "/ok/test/", т.е. перенаправление 
>   на "/ok/test/qwe.pl" (при возврате клиенту - к этому добавляет 
>   схема и имя хоста).
> 
> Всё это в предположении, что "proxy_pass https://hostname" - суть 
> проксирование на тот же nginx.
> 
> -- 
> Maxim Dounin
> http://nginx.org/
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

Спасибо! Убрал /ok/ из  proxy_redirect  и все  завелось. Правда   теперь не
совсем понятно, как это работало до того,  как  нарвался  на проблему с 
редиректом

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252809,252830#msg-252830



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