Возможный баг в 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