server_name bug

Gena Makhomed gmm at csdoc.com
Wed Oct 22 19:21:52 MSD 2008


On Wednesday, October 22, 2008 at 16:06:44, MZ wrote:

>> 1.2.3.4:80 - более приоритетен, чем *:80.
>> *:80 - это fallbacki, default route.

M> приоритет должен быть у того виртхоста
M> у которого подходящий server_name и listen,
M> а не тот у которого подходящий только listen.

сначала выбираются по listen, потом выбираются по server_name.

M> И это проблема реализации не сокетов,
M> а nginx-а, который выбирает неправильный виртхост.

смотрим доку:

http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server_name

Порядок проверки имён следующий:

    * полные имена,
    * имена с маской в начале имени — *.example.com,
    * имена с маской в конце имени — mail.*,
    * регулярные выражения.

точно так же работает и порядок проверки ip-адресов,
сначала ищем точное соответствие, потом - идем на *.

M> Nginx не должен игнорировать виртхосты  с *:80 только потому
M> что есть виртхосты с конкретно указанным ипом  в listen.

virtual host`ы бывают разные: ip-based и name-based.

в apache - есть директива NameVirtualHost и жесткое разделение
ip адресов на принадлежность тому или иному типу виртуалхостов.

в nginx такого явного разделения нет, виртуальные хосты более
гибко настраиваются с помощью директив listen и server_name.

-- 
Best regards,
 Gena






More information about the nginx-ru mailing list