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

Igor Sysoev igor на sysoev.ru
Ср Апр 20 17:12:29 MSD 2011


On Wed, Apr 20, 2011 at 08:48:56AM -0400, m.latyshev wrote:
> Простейшая конфигурация (для теста):
> 
> 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 собирается
> динамически, поэтому хотелось бы
> использовать именно такой вариант, т.е.
> вручную развернуть сокращенную запись
> в полную нет возможности.

Из-за конфликта в хеш имён не добавляются обе формы, которые
соответствуют .example.com.


-- 
Igor Sysoev



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