如何更改 NGINX 用户?

如何更改 NGINX 用户?

我有一个 PHP 脚本,用于创建目录并将图像输出到该目录。这在 Apache 下运行良好,但我们最近决定切换到 NGINX,以充分利用我们有限的 RAM。我使用 PHP mkdir() 命令创建目录:

mkdir(dirname($path['image']['server']), 0755, true);

切换到 NGINX 后,我收到以下警告:

Warning: mkdir(): Permission denied in ...

我已经检查了父目录的所有权限,因此我确定我可能需要更改 NGINX 或 PHP-FPM“用户”,但我不确定如何执行此操作(我从未指定过 APACHE 的用户权限)。我似乎找不到太多相关信息。任何帮助都非常好!

(注意:除了这个小问题之外,切换到 NGINX 的过程非常顺利;这是我第一次使用它,而且实际上只花了大约 10 分钟就启动并运行了 NGINX。现在我只是在解决一些问题。)

答案1

以 www:www 身份运行 nginx 和 php-fpm

###1. Nginx

编辑 nginx.conf 并设置用户www www;

user www www;

如果主进程以 root 身份运行,则 nginx 将 setuid()/setgid() 为 USER/GROUP。如果未指定 GROUP,则 nginx 使用与 USER 相同的名称。默认情况下,它是 nobody 用户和 nobody 或 nogroup 组或 ./configure 脚本中的 --user=USER 和 --group=GROUP。

###2. PHP-FPM

编辑php-fpm.conf并将用户和组设置为www

[www]
user=www
group=www

用户 - 进程的 Unix 用户。默认“www-data”

group - Unix 进程组。默认为“www-data”

答案2

Ubuntu 14.04要更改的文件用户团体PHP-FPM是:/etc/php5/fpm/pool.d/www.conf。在此文件中更改以下参数:

user = www
group = www
listen.owner = www
listen.group = www

答案3

为了回答你的实际问题只需像这样更改user行:nginx.conf

user    [username];

例子:

user    www-data;

Nginx 以 身份运行的首选用户实际上因操作系统而异。有时 Nginx 应该以 身份运行www-data。其他时候它实际上应该以 身份运行nobody

在某些操作系统(例如 Windows)上,这甚至无关紧要,并且可以注释掉或完全排除该usernginx.conf。如果您使用默认用户,也可以在 Linux 中将其排除。

答案4

以下解决方案可以帮我使用Ubuntu 18.04 LTSnginx 1.14和更改 Web 用户php7.2-fpm

1. Nginx

编辑/etc/nginx/nginx.conf并将用户设置为webuser;

user webuser;

2. PHP-FPM

编辑/etc/php/7.2/fpm/pool.d/www.conf

user = webuser
group = webuser
...
listen.owner = webuser
listen.group = webuser

相关内容