nginx + php запускаются с другим идентификатором пользователя

nginx + php запускаются с другим идентификатором пользователя

В старой системе с общим сервером моим именем пользователя было 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.

Связанный контент