Возможный баг в nginx с 0 телом
Igor Sysoev
is at rambler-co.ru
Thu Oct 26 12:11:42 MSD 2006
On Thu, 26 Oct 2006 toto at darkside.tomsk.ru wrote:
> Имеем 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 всё хорошо.
Какая OS ? Очень похоже на последние ядра Линукса 2.6.x или самые
последние 2.4.x.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list