nginx+Django FastCGI, реакция на ответ 302 (редирект)

Igor Sysoev is at rambler-co.ru
Thu May 21 10:08:14 MSD 2009


On Thu, May 21, 2009 at 04:12:56AM +0400, Yuriy Taraday wrote:

> Добрый вечер.
> 
> Я использую связку nginx+Django. Цель - заставить приложение работать
> в определённом каталоге сервера без изменений. То есть, чтобы запросы
> вида http://server/basedir/dir/something приходили в приложение как
> /dir/something, а возвращаемые редиректы на /otherdir/thing
> превращались в http://server/basedir/otherdir/thing.
> 
> При работе через модуль proxy с http-сервером Django, запросы и
> http-редиректы обрабатываются корректно без особых настроек:
> location /basedir/ { proxy_pass http://127.0.0.1:8000/; }
> 
> При работе через модуль fastcgi, чтобы отрезать basedir от пути,
> приходится пользоваться alias или rewrite (и передавать соотв. строку
> в параметре REQUEST_URI), но при этом если приложение возвращает
> ошибку 302 (Temporary moved), то в заголовке Location преобразований
> пути не делается, и пользователю в приведённом примере прийдёт
> редирект на http://servеr/otherdir/thing.
> 
> Хотелось бы узнать, как можно корректно настроить поведение связки
> через FastCGI.

Для FastCGI нет аналога proxy_redirect так же, как и proxy_set_header,
так как, в FastCGI такие ситуации исключительны, в отличие от проксирования,
где использование этих директив скорее правило, чем исключение.


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





More information about the nginx-ru mailing list