尝试访问新站点时,Nginx 显示失败(13:权限被拒绝)

Chr*_*ris 9 linux nginx web-server centos

我正在尝试设置自己的网络服务器以了解有关服务器管理的更多信息。

我决定从public_html用户 /home 目录内的文件夹中提供每个站点文件。

我已经安装了 Nginx,编辑了 nginx.conf 并将用户名/组更改为 nginx。

我为新站点添加了一个新用户,并将 vhosts 文件更改为如下所示;

server {
    listen         80;
    listen         [::]:80;
    server_name    website.com www.website.com;
    root           /home/website/public_html;
    index          index.html index.htm index.php;

    location / {
      try_files $uri $uri/ =404;
    }

    location ~* \.php$ {
    fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
Run Code Online (Sandbox Code Playgroud)

但当我尝试访问该网站时,它返回 404 Not Found。

当我检查错误日志时,我看到以下错误;

2019/01/02 19:49:45 [crit] 18248#0: *1 stat() "/home/website/public_html/" failed (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)

有人以前遇到过这种情况并可以告诉我如何处理吗?

我环顾四周,看到了一些关于 getenforce 的帖子,但是当我运行它时,它说Disabled.

我正在使用 CentOS7,如果这有什么区别的话。

干杯,

小智 11

按照这个网站的指南为我完成了(作为root):

setsebool -P httpd_enable_homedirs 1
setenforce 0
systemctl restart nginx
systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)


小智 2

这是您的主目录权限拒绝访问 nginx。

尝试:

ls -ld /home/website
Run Code Online (Sandbox Code Playgroud)

然后

setfacl -R -m u:nginx:rwx /home/website
Run Code Online (Sandbox Code Playgroud)

或者

chown -R nginx:nginx /home/website
chmod 655 /home/website
Run Code Online (Sandbox Code Playgroud)

  • @RenilBabu 使用 777 是一个坏主意 - 这意味着任何人都可以写入您的目录。使用 755 代替 (3认同)