server_name "";

Sean Allen sean at monkeysnatchbanana.com
Sat Dec 19 22:15:55 MSK 2009


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?



More information about the nginx mailing list