Re: [proposal] SERVER_NAME в fastcgi_params

Andrey Kopeyko andrey на kopeyko.ru
Пн Мар 6 10:59:30 UTC 2023


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 <andrey на kopeyko.ru>


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