Я размещаю несколько веб-страниц на одном сервере.
Для маршрутизации я использую haproxy.
Теперь один забавный пользователь хочет умлаут-домен «supportbär.de».
#haproxy.cfg
frontend http-in
..
acl is_supportbaer hdr_dom(host) -i supportbär
use_backend supportbaer_wp if is_supportbaer
Обычно это работает. Но в этом случае серверная часть supportbaer_wp не используется.
Может ли хапрой обрабатывать умлаут-домены? Как?
Ничто не может обрабатывать домены умлаута - так же как домены не могут иметь умлаут.
Браузер должен перевести их в другую форму, потому что URL-адрес не может передаваться в умляутах.
http://en.wikipedia.org/wiki/Internationalized_domain_name
имеет свои алгоритмы.
Это было сделано для совместимости.
Итак, HaProxy не увидит ae - он увидит кодировку согласно IDN. Используйте это, и это должно сработать.
Пример кодирования IDNA [править] Кодирование IDNA можно проиллюстрировать на примере домена Bücher.ch. «Bücher» в переводе с немецкого означает «книги», а .ch - это ccTLD Швейцарии. Это доменное имя имеет два ярлыка: Bücher и ch. Вторая метка - чистый ASCII, и ее не изменили. Первая метка обрабатывается Nameprep для получения bücher, а затем конвертируется в Punycode, в результате чего получается bcher-kva. Затем перед ним ставится префикс xn--, чтобы получить xn - bcher-kva. Итоговая метка, подходящая для использования в DNS, - это xn--bcher-kva.ch.
Для преобразований вы можете использовать онлайн-сервис IDN, например http://mct.verisign-grs.com/