nginx 服务 404 页面

nginx serving 404 pages

编辑:根据@Devons 的建议,我 运行 以下命令没有错误 (found in this post):

$ sudo find /var/public/www -type d -exec chmod 755 {} +

$ sudo find /var/public/www -type f -exec chmod 644 {} +

但是当我在 www 中列出文件时,权限仍然看起来不对。我究竟做错了什么?谢谢!

drwxrwx--- 1 root vboxsf   4096 Aug 28 12:45 app
-rwxrwx--- 1 root vboxsf   1646 Aug 28 12:45 artisan
drwxrwx--- 1 root vboxsf      0 Aug 28 12:45 bootstrap
-rwxrwx--- 1 root vboxsf   1201 Aug 28 12:45 composer.json
-rwxrwx--- 1 root vboxsf 105046 Aug 28 12:55 composer.lock
drwxrwx--- 1 root vboxsf   4096 Aug 28 12:45 config
drwxrwx--- 1 root vboxsf      0 Aug 28 12:45 database
-rwxrwx--- 1 root vboxsf    503 Aug 28 12:45 gulpfile.js
-rwxrwx--- 1 root vboxsf    159 Aug 28 12:45 package.json
-rwxrwx--- 1 root vboxsf     87 Aug 28 12:45 phpspec.yml
-rwxrwx--- 1 root vboxsf    899 Aug 28 12:45 phpunit.xml
drwxrwx--- 1 root vboxsf      0 Aug 28 12:45 public
-rwxrwx--- 1 root vboxsf   1928 Aug 28 12:45 readme.md
drwxrwx--- 1 root vboxsf      0 Aug 28 12:45 resources
-rwxrwx--- 1 root vboxsf    567 Aug 28 12:45 server.php
drwxrwx--- 1 root vboxsf      0 Aug 28 12:45 storage
drwxrwx--- 1 root vboxsf      0 Aug 28 12:45 tests
drwxrwx--- 1 root vboxsf   4096 Aug 28 12:56 vendor

这是我第一次使用 nginx,无法显示 laravel 欢迎页面。我正在使用 ubuntu 14.04 和 VBox 5。

我在 /var/nginx/sites-enabled/default 中将我的服务器配置为

server {
    listen 80 default_server;
    charset utf-8;
    server_name doimain.app www.domain.app;

    root /var/www/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

里面 /var/www/public 我可以列出 laravel public 文件夹文件

$ ls -l /var/www/public
total 3
-rwxrwx--- 1 root vboxsf    0 Aug 28 12:45 favicon.ico
-rwxrwx--- 1 root vboxsf 1786 Aug 28 12:45 index.php
-rwxrwx--- 1 root vboxsf   24 Aug 28 12:45 robots.txt

但是当我去 domain.app 时得到 404。 nginx错误日志显示:

2015/08/28 14:29:35 [crit] 1487#0: *14 stat() "/var/www/public/index.php" failed (13: Permission denied), client: 10.0.0.18, server: domain.app, request: "GET / HTTP/1.1", host: "domain.app"

我尝试了以下但没有成功:

确保 www-data 拥有文件夹结构 /var/www

$ sudo chown www-data:www-data /var/www

已将访问权限更改为 /var/www

$ sudo chmod -R 0755 /var/www

谢谢!

public 目录归 root 所有,其他人不可读。您需要将文件夹和文件的所有权更改为 www-data 或 chmod all。对于大多数配置,文件夹应为 0755,文件应为 0644。如果文件属于同一用户 运行 nginx 和 php(我假设是 www-data),您可以保留它。

单独更改 /var/www 的所有权没有任何作用,您必须更改 web 目录中的所有文件夹和文件。

您可以使用 -R 标志递归地 chmod 和 chown。

chown -R www-data:www-data /var/www/public

通过将 www-data 用户添加到 vboxsf 组并重新启动服务器来解决。

$sudo usermod -G vboxsf -a www-data