server_name "";

Sean Allen sean at monkeysnatchbanana.com
Sat Dec 19 22:42:53 MSK 2009


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... )



More information about the nginx mailing list