Конкурирующие сервера

m.latyshev nginx-forum на nginx.us
Ср Апр 20 16:48:56 MSD 2011


Простейшая конфигурация (для теста):

server {
    listen 80 default_server;
    server_name  _;
    return     404;
}

server {
    listen 80;
    server_name example.com;
    location / {
        rewrite   ^.*$  /index.html break;
        if_modified_since off;
        expires     -1;
        root /var/www/tests/first/;
    }
}

server {
    listen 80;
    server_name .example.com;
    location / {
        rewrite   ^.*$  /index.html break;
        if_modified_since off;
        expires     -1;
        root /var/www/tests/second/;
    }
}


Т.е. все различие между 2 и 3 секцией server
только в том, что в 3 секции у server_name есть
"." перед именем домен, а во второй нет,
ну и root разные.
Согласно документации ".example.com"
идентично "example.com *.example.com", но при
использовании сокращенной формы при
реконфиге получаем варнинг:
nginx: [warn] conflicting server name ".example.com" on 0.0.0.0:80,
ignored

И все запросы на sub.example.com выдают 404.

Если не использовать сокращенную
запись, то все работает корректно, т.е.
запросы на example.com попадают во вторую
секцию, а все запросы на sub.example.com в
третью, варнинг при этом тоже конечно
есть.

Чем можно объяснить такое поведение?
Это баг?

P.S. Конфиг для nginx собирается
динамически, поэтому хотелось бы
использовать именно такой вариант, т.е.
вручную развернуть сокращенную запись
в полную нет возможности.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,192559,192559#msg-192559




Подробная информация о списке рассылки nginx-ru