在旧的共享服务器系统中,我的用户名是 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 模块可以用于此目的。