On Mon, 6 Mar 2023, Nikolay Shaplov wrote:
В письме от воскресенье, 5 марта 2023 г. 22:04:35 MSK пользователь Илья
Шипицин написал:
> Но не следует ли заменить $server_name на $host в конфигах *cgi_params в
> дистрибутиве nginx? Я в первую очередь с этой мыслью сюда пришел...
но, с другой стороны, существующие механизмы позволяют вам использовать
$host и не зависеть от дефолтных конфигов, верно ?
Я в данном вопросе беспокоюсь скорее за других, чем за себя. Я в свое время
убил очень много времени, пока траблшутил проблему вызванную отсутствием
корректного значения в SERVER_NAME, и в таких случаях обычно стараюсь сделать
так, чтобы никому после меня не пришлось бы снова ходть по проделанному мной
пути. Изменение дефолта в конфигах *cgi_params, решит эту задачу лучше всего
боюсь, что изменение дефолтного поведения обычно не приветствуется.
В данном случае я бы сказал что это изменение более чем оправдано.
1. Нынешнее положение дел приводит к нарушению RFC. Исправление приведет к
соблюдению RFC "из коробки". Соблюдать RFC -- не только хорошо, но и очень
важно.
Николай,
к "нарушению RFC" приводит ваша конкретная конфигурация - когда вы
обрабатываете множество имён в дефолтном сервере, для которого вы _не задаёте_
server_name.
Вот корень всех бед.
И именно поэтому дефолтное поведение менять не следует.
Если вы зададите для этого сервера несуществующее имя ("_" как рекомендует
документация, или "fakehost.fakedomain") - переменная SERVER_NAME волшебным
образом появится.
P.S.
Будете в офисе - подходите, обсудим подробнее (ибо голосом будет удобнее).
2. Существующие конфигурации, по моему представлению не будут затронуты этим
изменением. Я вижу следующие варианты:
2.1. Либо в конфиге указан srever_name и $host будет возвращать то же значение
что и $server_name
2.2. Значение переменной окружения SERVER_NAME перезаписывается после
применения дефолтов. Новый дефолт не повлияет на поведение, так как будет
перезаписан
2.3. cgi-скрипт вообще игнорирует переменную окружения SERVER_NAME. И
изменения дефолта не страшно.
То есть для существующих инсталляций поведение никак не изменится. Зато очень
сильно упроститься создание новых инсталляций, для случаев, подобных моему.
P.S. Мне очень повезло что я настраивал CGI-скрипт написанный на языке который
я хорошо знаю, и у меня была возможность пройтись по всей глубине его
выполнения и обнаружить причину проблемы. В случае, если настраивающий этот
скрипт админ не владел бы языком программирования на котором написан скрипт,
задача настройки могла оказаться вообще в принципе не решаемой... Совершенно
не очевидное поведение было в отсутствии значения SERVER_NAME. Этот
воображаемый админ с большой вероятностью (и не без оснований) обвинил бы во
все nginx, ведь под apache все работает из коробки. Вот и я бы хотел чтобы и
под nginx оно тоже работало бы из коробки, я патриот nginx ;-). Я все стараюсь
поднимать на нем, по мере сил и возможностей.
--
Nikolay Shaplov aka Nataraj
Fuzzing Engineer at Postgres Professional
Matrix IM: @dhyan:nataraj.su
--
Best regards,
Andrey A. Kopeyko <and...@kopeyko.ru>
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru