403禁止使用nginx / 1.4.6(Ubuntu) - Laravel

时间:2015-10-30 19:53:56

标签: php laravel nginx ubuntu-12.04 laravel-5.1

我不断获得403 Forbidden

enter image description here

我的设置:

/etc/nginx/sites-available/default

默认

server {
        listen   80;


        root home/laravel-app/;

        index index.php index.html index.htm;

        server_name example.com;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on the php-fpm socket
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }

}

更新

我遵循了这条指示:here

任何关于此的提示/建议都将是一个巨大的帮助!

3 个答案:

答案 0 :(得分:11)

您需要为root指令指定绝对路径。 Nginx使用--prefix开关在编译时设置目录。默认情况下,这是/usr/local/nginx

这意味着您的根目前设置为root home/laravel-app/会导致nginx在/usr/local/nginx/home/laravel-app/查找文件,而这些文件可能不在您的文件所在位置。

如果将root指令设置为绝对路径,例如/var/www/laravel-app/public/ nginx将找到这些文件。

同样,您会注意到我在上面的路径中添加了/public/。这是因为Laravel在那里存储了它的index.php文件。如果您只是指向/laravel-app/,那么就没有索引文件,它会给你一个403.

答案 1 :(得分:0)

你需要有一个php文件规则(在默认文件中)

# pass the PHP scripts to FastCGI server listening on (...)
#
location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

答案 2 :(得分:0)

您在更新中添加的错误表明nginx正在尝试从ssc-portal文件夹中获取目录索引。由于您似乎正在使用基本的nginx安装,因此目录索引在此处失败的唯一原因是nginx无法找到列出的索引选项。

在您的服务器块中,您告诉nginx在请求目录列表时(按结尾斜杠结尾的URI)按顺序尝试以下位置:index.php,index.html,然后是index.htm。< / p>

如果找不到这些文件,则目录索引请求失败。

我最好的猜测是你的index.php文件位置错误。你是从ssc-portal文件夹中移出来的吗?