ПРОЕКТЫ 


  АРХИВ 


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: Теперь нельзя выставлять тип контента!



Hello!

On Sat, Sep 21, 2013 at 01:40:04PM -0400, nickolay wrote:

> Здравствуйте,
> 
> Обновили nginx до версии 1.5.5 и perl-скрипты перестали отдавать файлы, в
> лог выпадает следующее:
> "header already sent while reading response header from upstream"
> 
> Нашёл, что всему виной вот этот коммит:
> http://hg.nginx.org/nginx/rev/03ff14058272
> Он проверяет, если заголовок уже отправлялся, то это ошибка.

И это правильно.  Если заголовок пытаются отправить дважды - то 
это может привести к непредсказуемым последствиям, лучшее из 
которых - битый ответ.

> Но как быть? Нам перед тем как сделать внутренний редирект обязательно нужно
> установить MIME-тип, так как редирект будет на файл без расширения, и если
> не установить явно тип контента, то nginx сам установит
> application/octet-stream.
> 
> Устанавливаем из скрипта тип контента таким образом:
> $r->send_http_header("$mime")
> 
> Если убрать эту строку, то всё работает, но отдаётся с
> application/octet-stream.

Простейшее решение - отдавать файл perl'ом же, для этого есть 
специальный метод $r->sendfile().

http://nginx.org/ru/docs/http/ngx_http_perl_module.html#methods

-- 
Maxim Dounin
http://nginx.org/en/donation.html

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.