Transfer-Encoding: chunked

Alexey Vlasov renton at df.ru
Tue Apr 1 20:52:09 MSD 2008


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





More information about the nginx-ru mailing list