ПРОЕКТЫ 


  АРХИВ 


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: Transfer-Encoding: chunked



On Tue, Apr 01, 2008 at 05:40:43PM +0400, Igor Sysoev wrote:
> On Tue, Apr 01, 2008 at 11:22:56AM +0400, Alexey Vlasov wrote:
> 
> > А можно ли nginx'у запретить отдавать контент chunk'ми?
> 
> Нет, а зачем ?

Имеем скрипт:
# cat header.php
<?php

header ('HTTP/1.1 200 OK');
phpinfo();

?>

# telnet test-domain.ru 9099
Trying 111.222.111.222...
Connected to test-domain.ru.
Escape character is '^]'.
GET /header.php HTTP/1.1
HOST:test-domain.ru

HTTP/1.1 200 OK
Server: nginx/0.6.25
Date: Tue, 01 Apr 2008 16:22:13 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.5
Transfer-Encoding: chunked

f40
2007
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html><head>
<style type="text/css"> 
[skip]
<tr><td class="e">PHP API </td><td class="v">20041225 </td></tr>
<tr><td cl
1000
ass="e">PHP Extension </td><td class="v">20060613 </td></tr>
<tr><td class="e">Zend Extension </td><td class="v">220060519 </td></tr>
<tr><td class="e">Debug Build </td><td class="v">no </td></tr>
[skip]
<tr><td class="e">doc_root</td><td class="v"><i>no value</i></td><td
class="v"><i>no valu
cf
e</i></td></tr>
[skip]
...
[skip]
</div></body></html>
0


0

Connection closed by foreign host.

В итоге получается, что Apache, не смотря на то, что nginx делает ему
запрос по 1.0, всегда отвечает nginx'у:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
[skip]
...
2007
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
...
[skip]
</div></body></html>
0

nginx, наверно, как и положено, еще раз добавляет chunk'и (f40) и на выходе 
получается мусор
в виде посторонних символов в начале и в конце страницы, а если в PHP
еще и GZip используют, то на выходе вообще получаем нечитаемый мусор.

Конечно, можно в скрипте поправить 
header ('HTTP/1.1 200 OK');
на 
header ('HTTP/1.0 200 OK');
но существует большое количество скриптов/CMS, где пишут "HTTP/1.1 200
OK".

Предполагаю, что есть какое-то иное решение, в поисках которого я сейчас
и нахожусь.

-- 
Alexey Vlasov



 




Copyright © Lexa Software, 1996-2009.