четверг, 11 ноября 2010 г.

Неприятный баг в апаче

Есть такой момент, что следование записей о хостах в конфиге имеет значение, при этом apachectl -S покажет все как ожидается, но реально работать будет не так. Например, первая запись описывает domain.com, а все последующие - его поддомены. Но в первой записи есть

ServerAlias www.domain.com *.domain.com

Показывать apachectl -S будет то, что мы и ожидаем увидеть, а вот работать некорректно. Если же переставим нужные поддомены выше -- заработает, как и ожидалось.

И влечет это еще багу:
Include etc/apache2/Includes/*.conf
У меня каждый сайт в отдельном файле. И теперь если сначала считает основной домен, а потом поддомен - можно задолбаться.

Решение -- использование префиксов для поддоменов, например _sub.domain.com, __sub.sub.domain.com или всем дать номера. Один раз тоже вылезла бага - на всех серверах отрабатывало как надо, а на одном читало непойми как, там пришлось прописать руками все домены в конфиг. Или фикс - в конфиг:
Include etc/apache2/Includes/__*.conf
Include etc/apache2/Includes/_*.conf
Include etc/apache2/Includes/*.conf
(проверить, но должно работать)

Многие скажут, что это не бага, а фича, но на самом деле это бага в полном смысле. Лечится составлением списка всех доменов и выбором с наиболее точным совпадением, как у того же DHCP с масками мак-адресов сделано, от большего совпадения к меньшему.

Комментариев нет:

Отправить комментарий