
В старой системе с общим сервером моим именем пользователя было A. Каждый PHP-скрипт на моем сайте запускался с моим собственным именем пользователя:
$puser = posix_getpwuid(posix_geteuid())['name']; // = $puser = "A";
Теперь у меня есть собственный VPS, на котором работает nginx, а имя пользователя/группа — nginx.
Однако я создал аккаунт друга с именем пользователя B и хочу, чтобы каждый создаваемый им PHP-скрипт выполнялся с пользователем B, а не nginx. По сути, я хочу, чтобы каждый PHP-скрипт запускался с UID того же пользователя, который его создал.
Возможно ли это с nginx?
решение1
С помощью простого nginx вы не сможете сделать это, основываясь только на владельце файла.
PHP-FPM — это механизм выполнения скриптов, используемый совместно с nginx.
В PHP-FPM есть рабочие пулы PHP, которые можно настроить в разных портах. Каждый рабочий PHP-FPM может иметь пользователя, который используется для выполнения скриптов для этого пула.
Затем, на стороне nginx, настраиваются правила, какой бэкенд PHP-FPM используется для какого запроса. Обычная конфигурация заключается в том, что каждый виртуальный хост на nginx использует свой собственный пул рабочих процессов PHP-FPM.
При использовании простого nginx невозможно проверить владельца файла, чтобы можно было выбрать местоположение бэкэнда с помощью этой информации. lua
Однако для этой цели можно использовать модуль nginx.