LINUX.ORG.RU
ФорумAdmin

nginx и регистр доменного имени

 ,


1

4

Здравствуйте.

<?php
echo $_SERVER['HTTP_HOST'];
?>

n@MacBookProX:~$ curl 'http://domain.ru/1.php'
domain.ru
n@MacBookProX:~$ curl 'http://dOmAiN.rU/1.php'
dOmAiN.rU

nginx -v
nginx version: nginx/1.10.0 (Ubuntu)

Однако https://tools.ietf.org/html/rfc4343 говорит 'Domain Name System (DNS) names are «case insensitive».'

И что это за треш?

★★☆☆
Ответ на: комментарий от xtraeft

Для скора достаточно один раз какнуть ни о чём в обсуждение новостей раз в 48 часов. Хоть 1000 мессаг, хоть одна — пофиг. Так что оставь свои подозрения в скородрочестве себе, если я захочу пять звёздочек — я начну строчить новости.

mandala ★★★★★
()
Ответ на: комментарий от xtraeft

У заметной части кого угодно рвутся жопы от перехода чего угодно на что-то другое. Это как раз нормально.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Ну смотри, я до сих пор не понимаю принципа, которым руководствовались разработчики стандартов и вебсервера - хоть вы мне и говорите, что ТАК СУЖДЕНО и воля божия, но разумной причины так и не было.
Да, веб сервер должен отдавать заголовки как есть. Но почему он при разборе этого хостнейма забирает все подряд?

Вроде вопрос простейший, а такие недопонимания (да, кто-то скажет сейчас что я тупой). А с бинарным протоколом бы что творилось? Мрак.

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

мы принимаем на входе хост в любом регистре и матчим его в один сервернейм в лоукейс

Вот тут ты уже ошибся. «nginx использует такую функцию сравнения строк, которая не учитывает регистр». Только это известно. Под капотом он может не только в lowercase, но и в uppercase переводить. Или вообще использовать какие-то особые методы сравнения. То есть совсем не обязательно, что nginx хоть в какой-то момент времени имеет полную строку в lowercase. Это уже детали реализации и может меняться от версии к версии. А бекэнду передаются неизменные заголовки. Это фиксированное и неизменное поведение.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Вот тут ты уже ошибся. «nginx использует такую функцию сравнения строк, которая не учитывает регистр». Только это известно. Под капотом он может не только в lowercase, но и в uppercase переводить. Или вообще использовать какие-то особые методы сравнения.

Хорошо, но ведь суть не в этом, совсем не в лоукейсе. Суть в том, что lor.ru и LoR.ru у него уйдет в один вхост, но заголовок «host» бекенду он передаст как получил!

И раз у нас host разного регистра, то вполне логично было бы позволить обрабатывать server_name точно так же, учитывая регистр (возможно, это уже реализовано и я просто не нашел опцию?).

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 2)
Ответ на: комментарий от xtraeft

при разборе этого хостнейма забирает все подряд?

Ты имеешь в виду «почему он MyDomain и mydomain заруливает на один и тот же виртуалхост», или что-то другое?

thesis ★★★★★
()
Ответ на: комментарий от anonymous

Вебсервер сольет оба в один, а вдруг мне хочется их разделить? В Host же разные передаются значения.

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

Это выглядит логичным. Ты посылаешь браузер добыть тебе какой-то ресурс. Ресурс определяется урлом. Хттп-урло склеено из хоста, порта и пути к ресурсу. Хост, как заявлено, case insensitive.
При таких вводных было бы странно получать разные ресурсы, меняя регистр хостнейма. То есть, ходя на один и тот же хост в один и тот же сервис по одному и тому же пути.

thesis ★★★★★
()
Ответ на: комментарий от xtraeft

То есть ты предлагаешь сделать host регистрозависимым в HTTP, в то время как он регистронезависимый в DNS?

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Как же это одно и тоже, если в Host разные данные?

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от i-rinat

То есть ты предлагаешь сделать host регистрозависимым в HTTP, в то время как он регистронезависимый в DNS?

А сейчас это не так разве?

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

Сейчас он регистронезависимый и там, и там.

i-rinat ★★★★★
()
Ответ на: комментарий от anc

К слову перед @ текст может быть регистрозависимый, он истолковывается локально на сервере и какого-то правила на этот счёт нет. По идее клиенты должны слать как есть.

EvilFox ★★
()
Ответ на: комментарий от EvilFox

И после тоже, клиент шлет как есть VaSy.PupKin@VasY.CoM. Вообще говоря это относиться ко всему включая днс. Это ТС какие-то сопли на пустом месте развел.

anc ★★★★★
()
Ответ на: комментарий от anc

Но после же это уже область домена и он по стандарту регистронезависимый.

EvilFox ★★
()
Последнее исправление: EvilFox (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.