Приветствую! Разбираясь с 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