NGINX 访问时返回 404?

NGINX 访问时返回 404?

当我访问 NGINX 时,它抛出了 404,并且在我的错误日志中显示

/home/dev/Dropbox/www/index.php" failed (13: permission denied)

我不知道为什么,这只在我改变方向到 Dropbox 时发生。

运行ps -ef | grep nginx输出:

root 11373 5885 0 15:48 pts/0 00:00:00 sudo nano /etc/nginx/sites-available/default 
root 11374 11373 0 15:48 pts/0 00:00:00 nano /etc/nginx/sites-available/default 
dev 11566 3392 0 15:55 ? 00:00:03 gedit /var/log/nginx/error.log 
root 11607 1 0 16:01 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on;master_process on; 
www-data 11608 11607 0 16:01 ? 00:00:00 nginx:
worker process 
www-data 11609 11607 0 16:01 ? 00:00:00 nginx: worker
process 
dev 11715 5885 0 16:16 pts/0 00:00:00 grep --color=auto nginx

========================================================================

运行ls -l /home/dev/Dropbox/www/index.php输出:

-rw-rw-r-- 1 dev dev 2 Feb 10 15:26 /home/dev/Dropbox/www/index.php

答案1

Nginx 以用户 www-data 的身份运行。/home/dev/Dropbox/www/index.php 由用户 dev 和组 dev 所有,具有读写权限。其他人只有读取权限。没有人对文件有执行权限。

运行chmod +x /home/dev/Dropbox/www/index.php应该为所有者、组和其他人设置执行权限..您将看到访问权限,就像-rwxrwxr-x您再次对文件执行 ls -l 一样。

您可能还必须配置 nginx 以允许它使用 /home/dev/Dropbox/www/ 作为数据目录。

答案2

在任何主目录之外运行网站都会引发问题。考虑到要进入该目录,用户必须对访问树中的每个文件夹(/home/home/user//home/user/Dropbox/等)拥有读取和执行(对于目录则为“遍历”)权限,直到到达文档根目录本身为止。

这引入了一个很多安全风险 - 如果有人劫持了网络服务器,他们将能够遍历您自己的主目录数据,而无需成为超级用户。

任何网站应该无论是否使用 Dropbox,都可以在您的实际主目录之外运行。

您需要采取sudo chmod +rx /home/ /home/user/ /home/user/Dropbox/ /home/user/Dropbox/www/适当措施才能让事物访问它,除非您开始执行高度定制的访问规则。

(请注意,Dropbox不是一种备份/同步您的网站的合理方法,因为它会引入这样的权限问题......)

答案3

可能你正在使用php-fpmnginx。如果这样,您需要允许 nginx 用户写入 php-fpm 套接字。

编辑文件

sudo nano /etc/php/7.0/fpm/pool.d/www.conf

取消注释选项

;监听模式 = 0600

设置新值(允许所有用户写入 php-fpm 套接字)

listen.mode = 0666

重新启动 php-fpm 实例以应用更改

sudo /etc/init.d/php7.0-fpm 重启

相关内容