[Unit] Миграция с fastcgi и её подводные камни

Vadim A. Misbakh-Soloviov nginx на mva.name
Вт Июл 2 07:21:53 UTC 2019


Здравствуйте!

Пытаясь смигрировать очередной проект с PHP-FPM на Unit я в очередной раз 
столкнулся с проблемой того, что у fastcgi есть такая полезная штука как 
split_path_info, где можно задать какая часть URI является значением 
SCRIPT_NAME (да и вообще существует возможность динамического формирования 
этого значения при запросе), а какая - идёт в PATH_INFO.

Сама по себе переменная PATH_INFO (как доступное значение для приложения 
внутри массива $_SERVER) - ещё пол беды. Есть, конечно, приложения, которые 
рассчитывают на него, но это вторично по отношению к тому, что ну уж **очень** 
не хватает возможности динамически задавать значение "script" (aka SCRIPT_NAME 
в fcgi) для приложения в Юните.

Т.е. чтобы весь URI как есть передался в сообщённый в заголовках (ну а как 
ещё? Не вижу иного способа передать информацию Юниту от NgX) скрипт.

Без такой возможности приходится городить по 100500 блоков application для 
каждого потенциально возможного "script" (хардкодить все значения, в общем). 
Что, если честно, делает меня грустной пандой.

Соответствено, сопровождение большинства приложений, которые из коробки 
работают с ЧПУ (а таких нынче большинство) превращается в пытку :'(
А уж если они ещё и о SEO решают заботиться по примеру вордпресса и внаглую 
редиректить запросы типа "/scriptname.php?$uri" на "/?$uri" (явно полагаясь на 
то, что SCRIPT_NAME им передаётся и так), всё выходит на новый уровень...

В общем, подскажите, пожалуйста:
1) есть ли возможность как-то передавать значения конфигурационных директив 
приложения в заголовках запроса?
2) каковы шансы того, что если п.1 не является осуществимым сейчас, вы это 
сделаете по реквесту из списка рассылки? :)
2а) и каковы шансы того, что это произойдёт в ближайших релизах? :)


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