nginx + default {deferred|bind} = корки

Igor Sysoev is at rambler-co.ru
Wed May 30 00:01:08 MSD 2007


On Tue, May 29, 2007 at 11:55:00PM +0400, Igor Sysoev wrote:

> On Tue, May 29, 2007 at 07:57:56PM +0400, Александр Ворона wrote:
> 
> > Igor Sysoev пишет:
> > 
> > >>>nest tmp # ./nginx -t -c ./nginx.conf
> > >>>2007/05/21 08:09:43 [info] 1416#0: the configuration file ./nginx.conf 
> > >>>syntax is ok
> > >>>2007/05/21 08:09:43 [info] 1416#0: the configuration file ./nginx.conf 
> > >>>was tested successfully
> > >>>nest tmp # ./nginx -c ./nginx.conf
> > >>>Ошибка сегментирования (core dumped)
> > >
> > >Прилагаемый патч должее пофиксить segfault.
> > да, пофиксил
> > теперь в логе только
> > 2007/05/29 11:50:43 [alert] 19581#0: changing the listen() backlog to -1 
> > for 127.0.0.1:82 failed, ignored (98: Address already in use)
> > 
> > >FreeBSD позволяет bind() to 127.0.0.1:80 и *:80 в любом порядке.
> > >Насчёт Линукса - нужно проверить.
> > >
> > netstat -tnepl|grep cfg.txt
> > tcp        0      0 0.0.0.0:82                  0.0.0.0:* 
> >     LISTEN      0          85904536   19582/cfg.txt
> > 
> > нет bind() на 127.0.0.1:82
> 
> У меня воспроизводится эта ошибка, причём даже для такого непересекающегося
> варианта:
> 
>       listen  127.0.0.1:8000 default bind;
>       listen  192.168.1.1:8000 default bind;
> 
> Второй listen всегда вылетает с ошибкой (98: Address already in use).
> Проверялось на ядре 2.6.16.13.

Причём наблюдается это только на одинаковых портах.

> Здесь есть две странности:
> 1) эта ошибка должна по идее выдаваться ещё на стадии bind(),
> 2) эта ошибка не должна выдаваться для непересекающихся адресов (по крайней
>    мере, во FreeBSD с этим не возникает никаких проблем).
> 
> Есть подозрение на присутствие в ядре ipv6 (хотя nginx о нём не подозревает).
> 
> Можно попробовать собрать ядро без ipv6 ?


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list