ПРОЕКТЫ 


  АРХИВ 


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]

Возможный баг в nginx с 0 телом



Здравствуйте,
Имеем 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.




 




Copyright © Lexa Software, 1996-2009.