【问题标题】:nginx serving 404 pagesnginx 服务 404 页面
【发布时间】:2015-08-28 13:19:31
【问题描述】:

编辑:根据@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

谢谢!

【问题讨论】:

    标签: php nginx ubuntu-14.04 laravel-5.1


    【解决方案1】:

    公共目录归根用户所有,其他人无法读取。您需要将文件夹和文件的所有权更改为 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 在网站目录中根本不应该拥有太多东西,这样做你就可以打开自己的代码漏洞,因为你允许 www-data (Apache) 编写对任何文件,在需要时允许使用 chmod 权限,不要对所有内容都允许!请参阅此 AskUbuntu 答案:askubuntu.com/questions/20105/…
    • @williamvicary,我不知道这有多相关,因为您需要服务器端语言来执行写入。 Apache 一个人什么都做不了。拥有该目录的同一用户拥有 PHP 进程是很正常的。
    【解决方案2】:

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

    $sudo usermod -G vboxsf -a www-data
    

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 2021-02-12
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2016-05-19
      • 2016-09-04
      相关资源
      最近更新 更多