我的网站现在由 NginX 提供服务,正确的权限是什么?

Que*_*ner 5 ubuntu nginx

我正在运行 Ubuntu 16.10 的笔记本电脑上运行本地测试服务器。我正在运行 Apache2,但我决定切换到 NginX。按照这样的指南,我想我已经启动并运行了 NginX 以及 PHP 7.0 fpm。

然而,当我加载我的一个网站时,我得到一个403 Forbidden error. NginX 错误日志显示:

[error] 14107#14107: *1 directory index of "/var/www/example.com/" is forbidden, client: 127.0.0.1, server: example.com, request: "GET / HTTP/1.1", host: "example.com"
Run Code Online (Sandbox Code Playgroud)

我知道路径中的所有父目录都应该具有正确的权限,但我不清楚正确的权限到底是什么。如果我理解正确的话,在 Apache2 下,用户或组可以访问这些目录www-data,但我不确定在 NginX 下是否仍然如此。

我应该使用什么chmodchown命令来确保相关目录具有 NginX 可以访问的权限?请注意,我将用 NginX 完全替换 Apache2,因此无需为 Apache 保留任何设置。

另外,作为参考,这里是我的站点的当前目录路径和权限。请注意,其中的目录/var/www是指向我的 Dropbox 文件夹中的目录的符号链接(如果有任何影响的话)。

$ namei -om /var/www/example.com
f: /var/www/example.com
 drwxr-xr-x root     root     /
 drwxr-xr-x root     root     var
 drwxr-xr-x www-data www-data www
 lrwxrwxrwx www-data www-data example.com -> /home/user/Dropbox/subdir1/subdir2/Site/
   drwxr-xr-x root     root     /
   drwxr-xr-x root     root     home
   drwxr-xr-x user     user     user
   drwx--x--x user     user     subdir1
   drwxrwxr-x user     user     subdir2
   drwxr-xr-x user     user     Web
   drwxr-xr-x user     user     Site
Run Code Online (Sandbox Code Playgroud)

Ale*_*gin 6

您对 subdir1 的权限错误,请修复它:

chmod 755 /home/user/Dropbox/subdir1
Run Code Online (Sandbox Code Playgroud)

甚至更好(递归):

find /var/www/example.com -type d -print0 | xargs -0 chmod 755
Run Code Online (Sandbox Code Playgroud)

对于nginx用户,可以通过用户配置指令进行设置:

user www-data;
Run Code Online (Sandbox Code Playgroud)

您可以在 NGINX 服务器上使用任何用户,您只需要项目的文件夹(755)和文件(644)的正确权限。我更喜欢不同的用户nginx,这是很好的做法,但不是必需的。

你可以nginx在 Ubuntu/Debian 中创建系统用户,如下所示:

sudo adduser --system --no-create-home --disabled-login --disabled-password --group nginx
Run Code Online (Sandbox Code Playgroud)