Nginx 403禁止仅用于主文件夹内的文件

时间:2019-02-27 04:27:51

标签: nginx fedora

我使用标准dnf在Fedora 29上安装了标准Nginx。

我在nginx.conf的顶部将用户更改为“ root”。我还在nginx.conf顶部尝试将用户设置为“用户名”。我还在将用户保留为默认“ nginx”的同时尝试了此操作。

在服务器块内部:

root /usr/share/nginx/html (THIS WORKS!)
root /home/username/path/to/destination (403 FORBIDDEN)

我已经将index.html复制到了可以工作的地方和被禁止的目的地之间的每个文件夹位置,如下所示:

/usr/share/nginx/html/index.html (THIS WORKS!)
/usr/share/nginx/index.html (THIS WORKS!)
/usr/share/index.html (THIS WORKS!)
/usr/index.html (THIS WORKS!)
/index.html (THIS WORKS!)
/home/index.html (403 FORBIDDEN)
/home/username/index.html (403 FORBIDDEN)
/home/username/path/index.html (403 FORBIDDEN)
/home/username/path/to/index.html (403 FORBIDDEN)
/home/username/path/to/destination/index.html (403 FORBIDDEN)

我逐步将nginx.conf服务器块根目录更改为上述每个文件夹,并每次重新启动nginx:

root    /usr/share/nginx/html;              (THIS WORKS!)
root    /usr/share/nginx;                   (THIS WORKS!)
root    /usr/share;                         (THIS WORKS!)
root    /usr;                               (THIS WORKS!)
root    /;                                  (THIS WORKS!)
root    /home;                              (403 FORBIDDEN)
root    /home/username;                     (403 FORBIDDEN)
root    /home/username/path;                (403 FORBIDDEN)
root    /home/username/path/to;             (403 FORBIDDEN)
root    /home/username/path/to/destination; (403 FORBIDDEN)

每次:

sudo service nginx restart

以下是每个文件夹的权限:

drwxr-xr-x. 2 root root /usr/share/nginx/html
drwxr-xr-x.   3 root root /usr/share/nginx
drwxr-xr-x.  279 root root /usr/share
drwxr-xr-x.  12 root root /usr
dr-xr-xr-x.  19 root  root /
drwxr-xr-x.  4 root  root /home
drwxr-xr-x. 26 username username /home/username
drwxrwxrwx. 15 username username /home/username/path
drwxr-xr-x.  4 username username /home/username/path/to
drwxr-xr-x.  6 username username /home/username/path/to/destination

以下是复制到上述所有文件夹的index.html文件的权限:

-rw-r--r--. 1 root root 3700 Nov 20 12:32 index.html

2 个答案:

答案 0 :(得分:1)

为访问目录中的http服务应用访问上下文安全性。

在readhat中,启用了fedora和centos默认的selinux。

chown nginx:nginx -R "dir_name"
chcon -R -t httpd_sys_rw_content_t "dir_name"
semanage fcontext -a -t httpd_sys_rw_content_t "dir_name"

答案 1 :(得分:0)

我认为,您不应该在nginx.conf中更改用户。最常见的建议是保留默认用户 www-data

最好将您的用户名添加到www-data组或类似的名称。 尝试朝这个方向搜索,也许此链接会为您提供帮助:https://askubuntu.com/a/9411