server_name "";

Igor Sysoev igor at sysoev.ru
Sat Dec 19 22:48:53 MSK 2009


On Sat, Dec 19, 2009 at 02:42:53PM -0500, Sean Allen wrote:

> 2009/12/19 Igor Sysoev <igor at sysoev.ru>:
> > On Sat, Dec 19, 2009 at 02:28:06PM -0500, Sean Allen wrote:
> >
> >> 2009/12/19 Igor Sysoev <igor at sysoev.ru>:
> >> > On Sat, Dec 19, 2009 at 02:15:55PM -0500, Sean Allen wrote:
> >> >
> >> >> 2009/12/19 Igor Sysoev <igor at sysoev.ru>:
> >> >> > On Sat, Dec 19, 2009 at 10:59:39AM -0500, Sean Allen wrote:
> >> >> >
> >> >> >> On Fri, Dec 18, 2009 at 8:38 PM, merlin corey <merlincorey at dc949.org> wrote:
> >> >> >> > On Fri, Dec 18, 2009 at 3:04 PM, Sean Allen <sean at monkeysnatchbanana.com> wrote:
> >> >> >> >> On Fri, Dec 18, 2009 at 5:51 PM, Peter Leonov <gojpeg at gmail.com> wrote:
> >> >> >> >>> On 19.12.2009, at 1:14, Sean Allen wrote:
> >> >> >> >>>
> >> >> >> >>>> we are running 0.7.64
> >> >> >> >>>>
> >> >> >> >>>> have this as a server:
> >> >> >> >>>>
> >> >> >> >>>> server
> >> >> >> >>>> {
> >> >> >> >>>>     server_name "";
> >> >> >> >>>>
> >> >> >> >>>>     location /
> >> >> >> >>>>     {
> >> >> >> >>>>         return 404;
> >> >> >> >>>>     }
> >> >> >> >>>> }
> >> >> >> >>>>
> >> >> >> >>>> when we try to startup we get:
> >> >> >> >>>>
> >> >> >> >>>>  [emerg]: the first server name must not be empty in
> >> >> >> >>>> /ah/conf/nginx/default_server.conf:4
> >> >> >> >>>>
> >> >> >> >>>> wiki says:
> >> >> >> >>>>
> >> >> >> >>>> Since nginx 0.7.12, an empty server name is supported, to catch the
> >> >> >> >>>> requests without "Host" header:
> >> >> >> >>>>
> >> >> >> >>>> server {
> >> >> >> >>>>  server_name "";
> >> >> >> >>>> }
> >> >> >> >>>
> >> >> >> >>> We use the underscore + listen default.
> >> >> >> >>>
> >> >> >> >>> server
> >> >> >> >>> {
> >> >> >> >>>        server_name _;
> >> >> >> >>>        listen 80 default;
> >> >> >> >>>        location / { return 404; }
> >> >> >> >>> }
> >> >> >> >>>
> >> >> >> >>
> >> >> >> >> That works except, it is getting blocked by another and I'm not sure why.
> >> >> >> >> I'm doing this on a local network right now and m.example.com is 192.16.8.1.125
> >> >> >> >> if m.example.com is setup then this doesn't get used.
> >> >> >> >>
> >> >> >> >> m.example.com has:
> >> >> >> >>
> >> >> >> >> server
> >> >> >> >> {
> >> >> >> >>    listen m.example.com;
> >> >> >> >>    server_name m.example.com;
> >> >> >> >> }
> >> >> >> >>
> >> >> >> >> So from the wiki,
> >> >> >> >> if I do a request not to m.example.com but 192.168.1.125
> >> >> >> >> shouldnt the listen 80 default server block be the one that handles
> >> >> >> >> the response?
> >> >> >> >>
> >> >> >> >> _______________________________________________
> >> >> >> >> nginx mailing list
> >> >> >> >> nginx at nginx.org
> >> >> >> >> http://nginx.org/mailman/listinfo/nginx
> >> >> >> >>
> >> >> >> >
> >> >> >> > FYI Igor's latest documents at:
> >> >> >> > http://nginx.org/en/docs/http/request_processing.html suggest the
> >> >> >> > following configuration:
> >> >> >> >
> >> >> >> > server {
> >> >> >> >    listen       80  default_server;
> >> >> >> >    server_name  _;
> >> >> >> >    return       444;
> >> >> >> > }
> >> >> >> >
> >> >> >> > You will note that now we use default_server, the server_name _, and
> >> >> >> > no need for a location to hold the return code.
> >> >> >>
> >> >> >> I'm running 0.7.64 and after switching 'default_server' to default per
> >> >> >> the wiki doc you referenced,
> >> >> >> this still doesnt work. It doesnt respond as the default server
> >> >> >>
> >> >> >> i have
> >> >> >>
> >> >> >> m.example.com is still answering when you
> >> >> >>
> >> >> >> wget http://192.168.1.125/
> >> >> >
> >> >> > Have you looked this:
> >> >> > http://nginx.org/en/docs/http/server_names.html#miscellaneous_names
> >> >> > http://nginx.org/en/docs/http/request_processing.html
> >> >> >
> >> >>
> >> >> Yes.
> >> >>
> >> >> Question as this isnt clear to me.
> >> >>
> >> >> If I have a server
> >> >>
> >> >> server
> >> >> {
> >> >> listen m.example.com;
> >> >> server_name m.example.com;
> >> >> }
> >> >>
> >> >> and m.example.com is 192.168.1.125
> >> >>
> >> >> and i also have
> >> >>
> >> >> server
> >> >> {
> >> >> listen 80
> >> >> server_name _;
> >> >> }
> >> >>
> >> >> which one should handle a request w/o a hostname to 192.168.1.125?
> >> >
> >> > It will be handled by default server.
> >> >
> >>
> >> this one?
> >>
> >> server
> >> {
> >>     listen       80 default;
> >>     server_name  _;
> >>     return       444;
> >> }
> >>
> >> because that isn't what is happening for me and i have a really basic
> >> setup right now
> >> as we are starting over with a new system and i'm building up from simple stuff.
> >>
> >> the default server for me answers on all interfaces except
> >> 192.168.1.125 for which
> >>
> >> wget 192.168.1.125
> >>
> >> is being handled by m.example.com
> >
> > Here you have two default servers:
> >
> >  server {
> >     listen m.example.com; # default for 192.168.1.125:80
> >
> >  server {
> >     listen 80 default; # default for *:80
> >
> > You need to add
> >
> >  server {
> >     listen m.example.com default;
> >     server_name  _;
> >     return       444;
> >  }
> >
> 
> So if we have say 12 eth interfaces and I want to have a default
> server for each I need to do:
> 
> server
> {
> listen 192.168.1.125 default;
> server_name _;
> return 444;
> }
> 
> for each of them?
> 
> ( except of course the ip address would change... )

Yes, if you have, for example, 192.168.1.125 and 192.168.1.130,
and you do not want to receive requests for m.example.com on 192.168.1.130.


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



More information about the nginx mailing list