nginx提供404页

时间:2015-08-28 04:40:14

标签: php nginx ubuntu-14.04 laravel-5.1

编辑:根据@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公用文件夹文件

$ 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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

更改/ var / www的所有权本身不起作用,您必须更改Web目录中的所有文件夹和文件。

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

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

答案 1 :(得分:0)

由addig www-data用户解决,vboxsf组并重新启动服务器。

$sudo usermod -G vboxsf -a www-data