Re: [proposal] SERVER_NAME в fastcgi_params
В письме от воскресенье, 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 Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
вс, 5 мар. 2023 г. в 16:59, Nikolay Shaplov : > В письме от воскресенье, 5 марта 2023 г. 18:49:10 MSK пользователь Evgeniy > Berdnikov написал: > > > > > > Скрипту, тем ни менее нужно знать доменное имя которое он сейчас > > > обслуживает, и он смотрит на переменную окружения SERVER_NAME. > > > > > > А в этой переменной пусто. > > > > Подумайте об использовании переменной $host. > Выглядит как хороший вариант, лучше чем $http_host. Это спасибо. > > Но не следует ли заменить $server_name на $host в конфигах *cgi_params в > дистрибутиве nginx? Я в первую очередь с этой мыслью сюда пришел... > боюсь, что изменение дефолтного поведения обычно не приветствуется. но, с другой стороны, существующие механизмы позволяют вам использовать $host и не зависеть от дефолтных конфигов, верно ? > > > -- > Nikolay Shaplov aka Nataraj > Fuzzing Engineer at Postgres Professional > Matrix IM: @dhyan:nataraj.su > ___ > nginx-ru mailing list > nginx-ru@nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
В письме от воскресенье, 5 марта 2023 г. 18:49:10 MSK пользователь Evgeniy Berdnikov написал: > > > Скрипту, тем ни менее нужно знать доменное имя которое он сейчас > > обслуживает, и он смотрит на переменную окружения SERVER_NAME. > > > > А в этой переменной пусто. > > Подумайте об использовании переменной $host. Выглядит как хороший вариант, лучше чем $http_host. Это спасибо. Но не следует ли заменить $server_name на $host в конфигах *cgi_params в дистрибутиве nginx? Я в первую очередь с этой мыслью сюда пришел... -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: [proposal] SERVER_NAME в fastcgi_params
Добрый день. On Sun, Mar 05, 2023 at 06:41:17PM +0300, Nikolay Shaplov wrote: > Разбираясь с cgi-скриптом обслуживающим многочисленные доменные имена > столкнулся со следующей проблемой: > > В /etc/nginx/fastcgi_params написано > > fastcgi_param SERVER_NAME$server_name; [...] > Скрипту, тем ни менее нужно знать доменное имя которое он сейчас обслуживает, > и он смотрит на переменную окружения SERVER_NAME. > > А в этой переменной пусто. Подумайте об использовании переменной $host. -- Eugene Berdnikov ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru
[proposal] SERVER_NAME в fastcgi_params
Приветствую! Разбираясь с cgi-скриптом обслуживающим многочисленные доменные имена столкнулся со следующей проблемой: В /etc/nginx/fastcgi_params написано fastcgi_param SERVER_NAME$server_name; При этом в самом конфиге сайта server_name не указан, сервер обслуживает все доменные имена (фильтрация по имени осуществляется на фронтэнде). Скрипту, тем ни менее нужно знать доменное имя которое он сейчас обслуживает, и он смотрит на переменную окружения SERVER_NAME. А в этой переменной пусто. Потому что в $server_name тоже пусто. Я подозреваю что это как-то завязано на пустой server_name в конфиге. RFC же требует чтобы SERVER_NAME был корректно установлен всегда: https://tools.ietf.org/html/rfc3875#section-4.1.14 Я локально решил эту проблему использовав $http_host в качестве источника доменного имени. На практике он определен всегда (хотя в теории может быть только для http >= 1.1 это я не проверял): fastcgi_param SERVER_NAME$http_host; Но это некоторые полумеры которые не решают проблему глобально... Надо либо починить $server_name чтобы он был установлен всегда, либо использовать $http_host для задания переменной окружения SERVER_NAME, либо какая-то более сложная комбинация. Если авторы заинтересованы в решении этой проблемы, я могу провести дополнительные исследования, подготовить тестовые примеры демонстрирующиее это поведение и т.п. (В исходный код nignx наверное глубоко лезть не готов, хотя квалификация позволяет, не знаком я с ним совсем). Если авторы не заинтересованы... Значит придется везде в инструкциях тащить за собой эту уродливую конструкцию с $http_host... -- Nikolay Shaplov aka Nataraj Fuzzing Engineer at Postgres Professional Matrix IM: @dhyan:nataraj.su signature.asc Description: This is a digitally signed message part. ___ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru