Возможный баг в nginx с 0 телом
toto at darkside.tomsk.ru
toto at darkside.tomsk.ru
Thu Oct 26 12:01:59 MSD 2006
Здравствуйте,
Имеем nginx (пробовались последние версии, включая последнию),
back-end apache 1.x. Рабочие скрипты к примеру на php.
К примеру пытаемся достучаться к скрипту лежащему на apache через nginx:
<?php
header( "WWW-Authenticate: Basic realm=\"asd\"" );
exit;
?>
Берём тестирующий скрипт примерно такой:
<?php
for($a=0; $a<100; $a++)
{
$fp = fsockopen("some.host", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
}
else
{
$out = "GET /test.php HTTP/1.1\r\n";
$out .= "Host: some.host\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
echo "\n\n$a\n\n";
}
?>
ответ приходит такой:
HTTP/1.1 401 Authorization Required
Server: nginx/0.4.10
Date: Thu, 26 Oct 2006 07:46:22 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/4.4.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
WWW-Authenticate: Basic realm="asd"
0 (размер тела)
0 (номер запроса)
Теперь в чём мега жопа заключается: На каком то запросе (скажем 4 или
10 или 25) nginx выдает хедары, но не отдаёт размер тела и замирает до
тех пор пока не вылетит по таймауту. Что приводит к мега жопе в работе
с webdav, который общается в большинстве своём тока хедарами. Клиенты
просто подвисают, затем рвут соединения с ошибкой.
Что бы это подтвердить мы добавляем в наш скриптик тело и получаем:
<?php
header( "WWW-Authenticate: Basic realm=\"asd\"" );
echo "some.body";
exit;
?>
При тесте ни каких затыков не происходить и скрипт отрабатывается на
ура все 100 раз.
ЗЫ: Добавление тела не помогло в работе с webdav, он также рвёт
соединия, хотя если обращаться на прямую или через pound всё хорошо.
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
More information about the nginx-ru
mailing list