some question about server listen

Igor Sysoev is at rambler-co.ru
Tue Apr 28 08:33:19 MSD 2009


On Mon, Apr 27, 2009 at 10:14:41PM -0400, zhijianpeng wrote:

> Igor Sysoev Wrote:
> -------------------------------------------------------
> > On Mon, Apr 27, 2009 at 09:50:27AM -0400,
> > zhijianpeng wrote:
> > 
> > > ========my nginx.conf===========
> > > server { 
> > > 
> > >                listen                
> > 10.1.1.1:80;
> > >                server_name            
> > www.test1.com;
> > >                root /opt/test1;
> > >        }
> > > 
> > > server { 
> > > 
> > >                listen                 80;
> > >                server_name            
> > www.test2.com;
> > >                root /opt/test2;
> > >        }
> > > 
> > >  ========my nginx.conf===========
> > > I found that server www.test2.com not listen on
> > 10.1.1.1  ,but only listen on 127.0.0.1,why ?
> > 
> > Probably, you mistook: in this case nginx listen
> > on *:80 only.
> > 
> > If you want to bind() to an address, then you
> > should set
> >      listen    10.1.1.1:80  default bind;
> > 
> > 
> > -- 
> > Igor Sysoev
> > http://sysoev.ru/en/
> 
> Yes,I saw that nginx listen  on 0.0.0.0:80 
> but when I use :
> curl -v -H "Host:  www.test2.com" http://10.1.1.1/index.html 
> I get the result of www.test1.com/index.html,
> 
> and use 
> curl -v -H "Host:  www.test2.com" http://127.0.0.1/index.html 
> then get the result of www.test2.com/index.html
> 
> In this case ,does "listen *:80" means    this virtual_server only bind to the  ip address not used by any other virtual_server?

Although nginx listen on *:80, nevertheless it tests an address where
a request was sent to, as if nginx was bind() to the address. It emulates
usual socket bind() behaviour.


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list