[proposal] SERVER_NAME в fastcgi_params

Nikolay Shaplov dhyan на nataraj.su
Пн Мар 6 06:42:04 UTC 2023


В письме от воскресенье, 5 марта 2023 г. 22:04:35 MSK пользователь Илья 
Шипицин написал:
> > Но не следует ли заменить $server_name на $host в конфигах *cgi_params  в
> > дистрибутиве nginx? Я в первую очередь с этой мыслью сюда пришел...
 
> но, с другой стороны, существующие механизмы позволяют вам использовать
> $host и не зависеть от дефолтных конфигов, верно ?
Я в данном вопросе беспокоюсь скорее за других, чем за себя. Я в свое время 
убил очень много времени, пока траблшутил проблему вызванную отсутствием 
корректного значения в SERVER_NAME, и в таких случаях обычно стараюсь сделать 
так, чтобы никому после меня не пришлось бы снова ходть по проделанному мной 
пути. Изменение дефолта в конфигах *cgi_params, решит эту задачу лучше всего

> боюсь, что изменение дефолтного поведения обычно не приветствуется.

В данном случае я бы сказал что это изменение более чем оправдано.

1. Нынешнее положение дел приводит к нарушению RFC. Исправление приведет к 
соблюдению RFC "из коробки". Соблюдать RFC -- не только хорошо, но и очень 
важно.

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
----------- следующая часть -----------
Вложение не в текстовом формате было извлечено…
Имя: signature.asc
Тип: application/pgp-signature
Размер: 488 байтов
Описание: This is a digitally signed message part.
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20230306/9ce4c31e/attachment-0001.bin>


Подробная информация о списке рассылки nginx-ru