За последние 24 часа нас посетили 22834 программиста и 1263 робота. Сейчас ищут 747 программистов ...

Apache и символ "_"

Тема в разделе "Настройка веб-сервера", создана пользователем Chushkin, 25 фев 2017.

  1. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Господа-товарищи, а с какой версии Apache перестал понимать символ подчёркивания (_) в имени домена?
    Точно знаю, что v2.4.18 ещё понимает, а v2.4.25 уже не понимает. При прочих равных.
    Последний, при попытке обратится по такому имени, возвращает код ответа 400.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а nginx? =)
     
  3. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Да при чём тут nginx. Мне важно, до какой версии могу обновить апач, чтобы всё не посыпалось.

    п.с. Было v2.4.18 + php56, - работало. Поставил v2.4.25 + php7, - глюкнуло. Убил полдня, чтобы найти где и что глючит. Обплевал линуксоида в лице монитора. Оттёр и вернул v2.4.18 + php7, - работает. Но обновить надо.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а может nginx?
     
  5. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Потестил на apache 2.4.25 при LogLevel debug в логах появляется сообщение
    vhost.c(796) [strict] Invalid host name
    Это происходит в недрах функции strict_hostname_check, которая вызывается из fix_hostname
    Код (Text):
    1.    int strict = (http_conformance != AP_HTTP_CONFORMANCE_UNSAFE);
    Код (Text):
    1.    else {
    2.      rv = fix_hostname_non_v6(r, host);
    3.      if (strict && rv == APR_SUCCESS)
    4.        rv = strict_hostname_check(r, host);
    5.    }
    6.    if (rv != APR_SUCCESS)
    7.      goto bad;
    https://github.com/apache/httpd/blob/trunk/server/core.c#L4064-L4082

    Похоже, что вырубить эту проверку можно только поставив HttpProtocolOptions Unsafe
    http://httpd.apache.org/docs/2.4/mod/core.html#httpprotocoloptions
     
  6. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Это не решение.
    Запрет символа "_" в имени домена это явный глюк (ибо символ разрешён по стандарту).
    Поэтому допустимое решение это обновить до чуть более ранней версии, где глюка ещё нет, или ждать версию, где этот глюк исправят. Учитывая, что исправления у линуксоидов можно ждать годами, это ... грустно. :(

    А вообще, мой вопрос теряет актуальность. Я и сам бы нашёл ответ, ещё вчера, но выяснилось, что не могу найти бинарники предыдущих версий (мне нужно под винду).
    Бред какой-то, - есть только последняя версия бинарников. Почему ни один сайт не хранит предыдущие - загадка Природы. :(
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ссылку бы. А то я знаю про другой стандарт.
     
  8. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    И? Берешь правильный параграф того стандарта, на который ссылаешься и видишь ссылки на другие стандарты.

    В контексте твоей задачи - 1034 и 1035, например.
    Ссылка на 1034 есть в правильном месте того стандарта, ссылку на который ты присылаешь. Ты просто не в том параграфе смотришь.
     
  10. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    "Domain Concepts and Facilities November 1987"

    Ничего более древнего не нашёл?
    --- Добавлено ---
    Интересно, а как апач решает проблему национальных имён с таким подходом?
    --- Добавлено ---
    Да в том том.
    Кстати, в том месте, на которое ты ссылаешься, есть запись "reg-name = *( unreserved / pct-encoded / sub-delims )". Где unreserved определён выше.
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Вот жеж, rfc для него слишком стар ) Вроде есть даже тикет на эту тему, подчеркивание разрешилось в результате бага и было довольно оперативно поправлено.
     
  12. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    10 лет работало. Это "оперативно"?
    --- Добавлено ---
    Не имеет значения, стар не стар. Имеет значение "текущий стандарт", а текущий rfc3986 от 2005г. Или я ошибаюсь?
     
  13. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А при чем тут rfc на uri?
     
  14. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    А на что должно быть, если не на него?
     
  15. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    изначально разговор шел об имени домена, на это есть отдельный rfc приведенный @Ganzal
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Chushkin зачем в домене символ _, он вроде только в DNS используется и веб-сервер на него не должен отвечать. В DNS тип записи TXT для DKIM например.
    Просто стало интересно.
     
  17. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Не-а. Домен часть URI и должен соответствовать его правилам.
    А то, что DNS-сервера не соответствуют правилам URI это их проблемы, но никак не HTTP-сервера.
    --- Добавлено ---
    Затем, что это соответствует стандарту.
    Устаревший стандарт прошлого века разрешает в доменах только "-". Текущий стандарт - несколько, кроме "_". Может они тоже не нужны?
     
  18. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Стандарт на uri разрешает подчеркивание и кучу других символов в uri, стандарт на доменное имя - запрещает подчеркивание в доменных именах. Почему dns-сервера должны забить на свой rfc и следовать другом?
     
  19. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Потому что, - всё течёт всё движется. Стандарт 30-и летней давности давным давно устарел.
    60 лет назад вообще никаких DNS не было. Может этот "стандарт" применить? ;)
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Петицию! Петицию!
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Зарегай, плз, домен с _ в имени, и покажи нам всем.
     
  22. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    это не совсем что ты хотел, но вот для DKIM домен с _ просил yandex pdd создать

    upload_2017-3-22_14-18-12.png
     
  23. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Подписываюсь на тему, хочу тоже видеть такой домен!