accept_filter и backlog на непервом default-сервере

Igor Sysoev is at rambler-co.ru
Wed Aug 27 17:26:43 MSD 2008


On Wed, Aug 27, 2008 at 03:17:10PM +0400, jackal wrote:

> Задача:
> Нужно чтобы один домен на одном айпи a.b.c.d обслуживался одной директивой 
> server, а все остальные домены (на всех айпи, в т.ч. a.b.c.d - другой 
> директивой server)
> 
> Сделано вот так:
> server {
> 	listen a.b.c.d:80;
> 	server_name domain.ru;
> 	...
> }
> server {
> 	listen a.b.c.d:80 default accept_filter=httpready backlog=1024;
> 	listen 80 default accept_filter=httpready backlog=1024;
> 	...
> }
> 
> Вопрос - почему не выставляется backlog для айпи a.b.c.d, и выставляется ли 
> accept_filter?
> 
> # sysctl kern.ipc.somaxconn
> kern.ipc.somaxconn: 4096
> 
> # netstat -Lan
> Current listen queue sizes (qlen/incqlen/maxqlen)
> Proto Listen         Local Address
> tcp4  0/0/4096       a.b.c.d.80
> tcp4  0/0/1024       *.80

Прилагаемый патч должен помочь.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/http/ngx_http.c
===================================================================
--- src/http/ngx_http.c	(revision 1538)
+++ src/http/ngx_http.c	(working copy)
@@ -1158,6 +1158,7 @@
 
                         in_addr[a].core_srv_conf = cscfp[s];
                         in_addr[a].default_server = 1;
+                        in_addr[a].listen_conf = &listen[l].conf;
                     }
 
                     goto found;


More information about the nginx-ru mailing list