Появляется "мусор" в response_body до и после "ожидаемого body"

Maxim Dounin mdounin at mdounin.ru
Tue Apr 7 15:02:57 MSD 2009


Hello!

On Tue, Apr 07, 2009 at 01:44:08PM +0400, Igor Sysoev wrote:

> On Tue, Apr 07, 2009 at 12:38:50PM +0400, Maxim Dounin wrote:
> 
> > Hello!
> > 
> > On Tue, Apr 07, 2009 at 11:54:19AM +0400, Igor Sysoev wrote:
> > 
> > > On Mon, Apr 06, 2009 at 08:43:21PM +0400, bas-kam wrote:
> > > 
> > > > 
> > > >    03.04.09, 04:42, "Bogun Dmitriy" <vugluskr at vugluskr.org.ua>:
> > > > 
> > > >      В Птн, 03/04/2009 в 03:05 +0400, Anton Yuzhaninov пишет:
> > > > 
> > > > Bogun Dmitriy wrote:
> > > > > Ситуация следующая с ipb форума делается ajax запрос на "быстрое 
> > > > > редактирование" поста. В ответ возвращается страничка у которой в body в 
> > > > > начало и в конец добавлено несколько символов, которых не было в момент 
> > > > > отправки.(Чтобы это проверить я добавил сохранение сформированного 
> > > > > ответа в файл непосредственно перед отдачей клиенту). В начало body 
> > > > > добавляется "8366\n" в конец "\n0". Символы в начале изменяются, в 
> > > > > хвосте всегда 0. Количество символов не меняется...
> > > > 
> > > > Скорее всего из за баги в php-коде в ответ на HTTP/1.0 запрос от nginx
> > > > возвращается HTTP/1.1 ответ с chunked encoding
> > > > 
> > > > workaround - прописать в конфиге апача:
> > > > 
> > > > SetEnv force-response-1.0 1
> > > > 
> > > > В моём случае ни строчка выше, ни "BrowserMatch ".*" downgrade-1.0 force-respon
> > > > se-1.0" не помогли, т.е. мусор по прежнему отображается на страницах.
> > > > Естественно апач перегружал после добавления строчек. Строчки добавил в конец h
> > > > ttpd.conf (на всякий случай).
> > > > Так же "мусор" у меня прямо на главной странице. Всё это добро появилось после 
> > > > перехода на связку apache (2.2) + nginx (0.6.36). 
> > > 
> > > Патч для 0.7.50. Chunked ответ передаётся как есть.
> > > Некоторые фильтры работают не корректно:
> > > 1) gzip-фильтр такие ответы не сжимает;
> > > 2) SSI обрабатываться при условии, что команда не попадает на границу chunk'а;
> > > 3) sub_filter работает при условии, что заменяемая часть не попадает
> > >    на границу chunk'а;
> > > 4) XSLT, addition работать не будут.
> > 
> > Бррр.  Может лучше не трогать это место пока не появится 
> > нормальный разбор chunked?
> > 
> > Потому как я живо представляю в какую тыкву превратится ответ если 
> > по нему пройдётся ssi и/или sub_filter, изменив тем самым реальный 
> > размер чанка (но не поправив chunk-size).
> 
> Да, про это я совсем забыл. ssi и sub_filter вообще работать не будут,
> как XSLT и addition.

Charset тоже сломается, для случая utf-8.  Не говоря уже про 
всякие внешние модули.

> Ну в общем, да, я пока в сомнениях, коммитить ли это.

Сейчас подобные проблемы хорошо видны и являются следствием 
некорректного поведения бекенда.  Будут видны плохо и приводить к 
подземному стуку.

Проще сделать поддержку chunked, IMHO.  Я сейчас как раз этим 
занимаюсь, ибо в первом приближении доделал постоянные соединения с 
fastcgi и перешёл к proxy.

Maxim Dounin





More information about the nginx-ru mailing list