ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 404 -> FastCGI



23.06.05, Igor Sysoev<is@xxxxxxxxxxxxx> написал(а):> On Thu, 23 Jun 2005, 
Andrew Stroganoff wrote:> > > Появилась проблема, как мне кажется связанная с> 
> кешированием информации о файле (fstat).> >> > краткое описание проблемы:> > 
запрос, сервер не находит файла, отправляет запрос на fast-cgi,> > последний 
создает этот файл и отправляет редирект браузеру, чтобы тот> > еще раз запросил 
этот файл.> > На это раз приходит пустой файл, хотя он совсем не пустой.> > 
Если после этого нажать в браузере refresh - то выдается правильный файл.> >> > 
вот примерная схема работы:> > 1) браузер отправляет запрос на файл> > 2) nginx 
понимает, что файла нету, срабатывает error_page на новый location> > 3) на 
новом location стоит fastcgi_pass> > 4) мой модуль получает запрос, создает 
файл, пишет в syslog, делает> > header("Location: /redirect/$the_same_uri");> > 
5) браузер получает ответ и идет по редиректу> > 6) nginx получает запрос, 
который попадает под> >   rewrite ^/redirect(.*)$ $1 last;> > и отдает пустой 
файл, но со всеми правильными заголовками.> >> > Еще интересно, что толи в 
первый, то ли во второй запрос nginx пишет в> > error-лог,> > что "failed (2: 
No such file or directory)".> >> > вот конфиг:> >> >        location / {> >     
       rewrite ^/redirect(.*)$ $1 last;> >            index  index.html 
index.htm;> >        }> >> >        location /data/ {> >            error_page 
404 "/generate-data/";> >        }> >> >        location /generate-data/ {> >   
         fastcgi_pass   localhost:1122;> >            fastcgi_index  base.xml;> 
>            fastcgi_param  REQUEST_URI      $request_uri;> >        }> > "(2: 
No such file or directory)" выдаётся на первый запрос.> По идее схема должна 
работать. Почему выдаётся пустое тело - нужно> делать отладочный лог.> > 
Кстати, схему можно улучшить, используя внутрений редирект, а не внешний:> 
нужно выдавать не "Location: /redirect/$the_same_uri", а> "X-Accel-Redirect: 
$the_same_uri".
Эта схема работает, только вот вчера наткнулся на такую беду:окончательный 
ответ сервера браузеру начинается с "HTTP/1.1 404 Not Found" :)После этого 
заголовка в нормальном виде следует весь файл :)Некоторые HTTP клиенты такого 
цирка не понимают :(
Что надо сделать, чтобы ответ был 200 OK ?
спасибоандрей



 




Copyright © Lexa Software, 1996-2009.