[proposal] SERVER_NAME в fastcgi_params
Nikolay Shaplov
dhyan на nataraj.su
Вс Мар 5 15:41:17 UTC 2023
Приветствую!
Разбираясь с 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
Тип: application/pgp-signature
Размер: 488 байтов
Описание: This is a digitally signed message part.
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20230305/9029aabc/attachment.bin>
Подробная информация о списке рассылки nginx-ru