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».'

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

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

но $host это странно в rewrite (если только не для логов).

Почему странно?
Вдруг надо отдавать часть урла в зависимости от хостнейма?
map да, просто раз уж речь зашла, то стало интересно, можно ли в рерайт воткнуть переменную $host и считается ли это плохой практикой, или нормой.

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

Мне вот насрать на пыль на кухонном шкафу, поэтому она там сохраняется месяцами, если не годами.

Т.е. ты сейчас сравниваешь устройство http протокола с пылью? Пыль лежит где то там на шкафу, а http ты юзаешь ежедневно.

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

Видимо, всех вгоняет в ступор это. Поясни, каким образом передача веб-сервером полученного имени без изменения регистра означает важность его сохранения ?

А меня вгоняет в ступор что на уровне днс регистр домена не важен, а потом становится важен.

Им так хочется. Мало ли. Стандарт от этого не нарушается точно так же.

Круто.

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

который покатил телегу на nginx из-за того, что не знает различия $http_host и $host

Я не катил телегу на nginx, это модератор там что то про него говорил.
Ну и если бы сразу кто-то ответил нормально, как это сделал drsm, то срача и не было бы. Я свои ошибки без проблем могу признать и извиниться, если нужно. Но почему то до него никто в комментах особой адекватностью не отличился, вместо этого решили поучить меня жизни и еще всякие вордпрессы приплели.

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

а потом становится важен.

Так все и спрашивают: где ? Какие-то конкретные приложения, может быть, это и расценивают, как что-то важное, но и только.

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

А почему его не должно быть? Тебе это уже три страницы объяснить пытаются, case insensitive это 'FOO' == 'foo', а не x = x.lower()
Иначе в RFC было-бы написано не «значение заголовка Host нечувствительно к регистру», а «сервер должен привести значение заголовка Host к нижнему/верхнему регистру»

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

ну, мне кажется, что rewrite особо не нужен, за исключением тривиального

        rewrite ^/app/(.*) /$1 break;
        proxy_pass http://app$uri$is_args$args;

часть урла сделать зависимым от хостнейма, лучше через map, оно нагляднее как-то...

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

Я вот знаю, но кого это волнует?

Но ты сам написал, что не знаешь, как было раньше. Зачем тогда написал, если не знаешь?

что является ложью

Делая замену домена простой текстовой заменой ты ломаешь контент, ты в курсе? Привет, вордфильтры, коверкающие слова. Их делают с таким же подходом, как и у тебя. Простой заменой подстроки.

вместо обсуждения технического вопроса мы 2 страницы унижаем меня, никто даже похоже не прочитал что я пишу.

Нечего обсуждать. Вся твоя позиция сводится к «раз домены регистронезависимые, вебсервер ОБЯЗАН преобразовать всё к нижнему регистру». Что, очевидно, бред. Он может преобразовать. Может не трогать. Может гРеБёнКоЙ домен сделать. Это всё укладывается в описание.

Сначала тебе спокойно писали, но ты ничего не понял, продолжая с пеной у рта доказывать, что вебсервер тебе обязан.

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

Да блин, неужели сложно строчку в конфиг добавить?

Добавь и успокойся. В чём проблема-то?

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

Так все и спрашивают: где ? Какие-то конкретные приложения, может быть, это и расценивают, как что-то важное, но и только.

Меня сейчас не волнует вопрос бекендов, мне интересно что спереди происходит и почему. Так вопрос простейший - почему так? Для чего? Тут один мужик сказал что знает, но не скажет :) Жду практических примеров.

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

Так вопрос простейший - почему так?

Потому, что изначально так сделали. Теперь это - обратная совместимость как минимум.

AS ★★★★★
()

Никак не могу понять: это настолько толсто, что аж тонко, или действие этанола?

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

Не, я о другом. Смотри пример:

rewrite ^/js/(.*).js$ /lor.js last;

Как видно, тут регуляркой матчатся все *.js из /js/, а как в таком же примере сделать что-то вроде ^/js/\$host\.js$ ?

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

А я не могу понять почему из всего треда только один человек написал грамотный комментарий. Предположим что я ошибаюсь - почему бы не объяснить грамотно, без пафоса и понтов?
Про вашего модератора бздуна даже и говорить неохота, факты он проигнорировал.

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

Естественно. Или ты «case insensitive» неправильно переводишь ?

man сарказм.

Потому, что изначально так сделали. Теперь это - обратная совместимость как минимум.

Как и где изначально так сделали, в каком веб сервере? С чем обратная совместимость? Тут будет опять история про абстрактный станок с досом, куда ходят по http через домен?

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

Делая замену домена простой текстовой заменой ты ломаешь контент, ты в курсе? Привет, вордфильтры, коверкающие слова. Их делают с таким же подходом, как и у тебя. Простой заменой подстроки.

Браузеры регистр коверкают как хотят? Коверкают. А если я хочу через браузер открыть (писал уже выше) не linux.org.ru, а lINUx.org.ru - браузер мне не даст это сделать. Ну и кто мне тут будет говорить про замену домена?
Причем тут вордфильтры - не понял, хз причем тут они.

Вся твоя позиция сводится к «раз домены регистронезависимые, вебсервер ОБЯЗАН преобразовать всё к нижнему регистру». Что, очевидно, бред. Он может преобразовать. Может не трогать. Может гРеБёнКоЙ домен сделать. Это всё укладывается в описание.

Бред - это потому что так исторически сложилось?

Сначала тебе спокойно писали, но ты ничего не понял, продолжая с пеной у рта доказывать, что вебсервер тебе обязан.

Не понимаю, почему вам так нравится подход «через жопу к гландам».

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 2)
Ответ на: комментарий от xtraeft
curl -s www.gOOgle.ru -v 
* Rebuilt URL to: www.gOOgle.ru/
*   Trying 195.64.213.59...
* TCP_NODELAY set
* Connected to www.gOOgle.ru (195.64.213.59) port 80 (#0)



wget  'www.GooGle.ru'
--2017-01-30 16:16:10--  http://www.google.ru/
Resolving www.google.ru... 195.64.213.59, 195.64.213.25, 195.64.213.31, ...
Connecting to www.google.ru|195.64.213.59|:80... connected.

Стандарты, говорите? А ну да, их же нет.

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

Как и где изначально так сделали, в каком веб сервере?

В DNS так сделали. А все прочие приложения, которые используют DNS, обязаны это учитывать.

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

Стандарты, говорите? А ну да, их же нет.

И что тут не так ? То, что wget поменял GooGle на google ? Ты, всё же, не понимаешь case insensitive, похоже.

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

не разобравшись в вопросе лезешь в бутылку.

Именно. Пожалел, что зашел в этот тред.

Человеку нечем заняться.

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

Но это же пример, высосанный из пальца? Я не про тебя, я про технологию. Кому то не понравился DNSSEC, давайте запилим вот такой мега костыль. Это кто то юзает вобще?

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

И что тут не так ? То, что wget поменял GooGle на google ? Ты, всё же, не понимаешь case insensitive, похоже.

Конечно, и курл тоже не понимает. Вы может и привыкли, когда с одной стороны шлются какие попало данные, а со стороны сервера они принимаются опять же как попало, но я против этого. Я, знаете ли, у мамы бунтарь, я за нормальный подход. Если вы считаете что можно брать хостнейм и коверкать его регистр одной пяткой перед передачей на сервер, а на сервере потом другой пяткой коверкать в другой регистр, окей. Я считаю что это ненормально, вот за это вы меня тут и закидали. Просто я считаю что это бред, на этом можете закрыть тред, мне выписать -200, вам по медали всем терпеливым, а кое кому пивка.

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

Но это же пример, высосанный из пальца?

Ты просил один пример? Вот тебе один пример. Чего юлишь?

Это кто то юзает вобще?

Включено по умолчанию в libevent. Так что это используют почти все, кто использует libevent. Редко кто заморачивается отключением.

«кто то», «вобще»

И этот человек придирается к орфографии других!

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

Ну и если бы сразу кто-то ответил нормально, как это сделал drsm, то срача и не было бы.

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

<?php 
echo $_SERVER['HTTP_HOST'];
?>
n@MacBookProX:~$ curl 'http://dOmAiN.rU/1.php'
dOmAiN.rUnginx version: nginx/1.10.0 (Ubuntu)

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

Спросил про http_host, тебе про него и отвечали, что бред несёшь. drsm либо libtelepathy задействовал, либо истина где-то рядомв комментах выяснилась.

Нечего на зеркало пенять, коли print_r($_SERVER); не осилил.

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

Браузеры регистр коверкают как хотят? Коверкают.

Имеют право, это разрешено стандартом.

Причем тут вордфильтры - не понял

Ты меняешь домен в ссылках изменением всего текста. Если в тексте будет что-то типа

А вот так работает md5sum:
    $ echo example.org | md5sum -
    61a82c6cc799d6edf821d6768931fc78  -
а ты меняешь строку example.org на что-то другое, пример будет поломан.

Ты что, не видел, как мат фильтруют? Тоже простой заменой, вне зависимости от того, где встретилась подстрока.

Бред - это потому что так исторически сложилось?

Бред, потому что логика сломана. Из «регистр букв в доменах значения не имеет» не следует «вебсервер обязан переводить всё в нижний регистр». Из этого следует «вебсервер может переводить всё в нижний регистр». Обрати внимание на слово «может». Может переводить, а может и не переводить. Как я уже и говорил, может хоть гребёнку делать. А может оставить как есть.

Ты коверкаешь реальность в угоду свои убеждениям, игнорируя логику. Вот поэтому бред.

Не понимаю, почему вам так нравится подход «через жопу к гландам».

Не понимаю, почему тебе нравится подход «через гланды к жопе».

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от xtraeft

Я им про http host, они мне про днс.

А тебе про то, что первопричина - в DNS. И называется она «case insensitive domain names».

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

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

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

Мир вообще несовершенен. Вот тебе еще образчик регистронезависимости:

┌─[15:26][leave][~]
└─╼ uname -s
Darwin
┌─[15:26][leave][~]
└─╼ mkdir TEST
┌─[15:26][leave][~]
└─╼ mkdir test
mkdir: test: File exists

Или это не вызывает у тебя жжения?

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

Предположим что я ошибаюсь - почему бы не объяснить грамотно, без пафоса и понтов?

Для начала, нужно спрашивать грамотно, без пафоса и понтов. Что ты ожидаешь после «И что это за треш»? Здоровой дискуссии?

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

не, так нельзя делать, можно что-то тока типа,

rewrite ^/js/(.*).js$ /lor.js?source=$1&host=$host last;

это тебе наверное try_files нужен, а не rewrite

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

Што?

То. Вынь из своего «http host заголовок» доменное имя и вставь IP — доменного имени там больше не будет, но работать от этого не перестанет.

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

устройство http протокола

Какой http протокол? Засунь свой хттп куданить себе и не высовывай. Обработка доменного имени не относится к твоему сраному хттп.

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

Никак не могу понять: это настолько толсто, что аж тонко, или действие этанола?

Нет, просто человек не может вырваться за границы своего узкого мышления и понять что доменное имя и его обработка срать хотели на его урл и хттп.

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

Обрати внимание на слово «может». Может переводить, а может и не переводить. Как я уже и говорил, может хоть гребёнку делать. А может оставить как есть.

Так ведь моя претензия именно к этому поведению!

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

не linux.org.ru, а lINUx.org.ru - браузер мне не даст это сделать.

А еще браузер IP поменяет на доменное имя. И что? Какое отношение это имеет стандартам передачи несчастного домайн нейм?

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

О, замечательно. Давайте потыкаем меня теперь в макось заодно. Ну перенесите тред уже в толксы и переименуйте в унижение xtraeft.

Или это не вызывает у тебя жжения?

Там кстати же галочка в дисковой утилите есть.

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

А еще браузер IP поменяет на доменное имя.

Нет, не поменяет. С чего бы? Заведи себе вхост с ип вместо домена и проверь сам. А на какой домен он должен ип поменять, мне интересно стало даже?

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

Заведи себе вхост с ип вместо домена и проверь сам.

Откажись от домайннейм и тебя не будет касаться ДНС! Шикарная логика. Выкинь IP и тебя не будет касаться TCP/IP.

Ну так твой хттп заголовок ломается от обращения не по домайннейм а по ип? Не? Ну так вот — обработка домайннейм ни какого отношения к хттп и прочему не имеет.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 2)
Ответ на: комментарий от i-rinat

а ты меняешь строку example.org на что-то другое, пример будет поломан.

Ничего не будет поломано, потому что браузер этот домен в лоукейс перегонит, хоть ты напиши <a href="www.linux.org.ru«></a>, хоть <a href=»http://www.linUx.org.ru«></a>, при клике все равно получится лоукейс.

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

Не, тут мне интересно было можно ли в rewrite юзать переменные.

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

То. Вынь из своего «http host заголовок» доменное имя и вставь IP — доменного имени там больше не будет, но работать от этого не перестанет.

Здрасьте. Если у тебя этот ip не указан в server_name или там вилдкард не стоит, то у тебя 403 откроется, а не что ты там ожидаешь.

xtraeft ★★☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.