我正在运行 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 下是否仍然如此。
我应该使用什么chmod或chown命令来确保相关目录具有 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)
您对 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)
| 归档时间: |
|
| 查看次数: |
30670 次 |
| 最近记录: |