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 ?
спасибоандрей
|