403 Forbidden on nginx/1.4.6 (Ubuntu) - Laravel

Posted

技术标签:

【中文标题】403 Forbidden on nginx/1.4.6 (Ubuntu) - Laravel【英文标题】: 【发布时间】:2016-01-31 08:19:50 【问题描述】:

我不断收到403 Forbidden


我的设置:

/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


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

【问题讨论】:

你安装了php5-fpm吗? 能不能翻一下nginx的错误日志,看看收到Status 500的时候是什么错误?我有一种预感,您的 sock 文件可能有错误的权限,导致该状态为 500。要么是这样,要么是你的 PHP 配置中的某些东西。 嗯,你可以尝试做chmod 666 (or 777) /var/run/php6-fpm.sock,重启nginx再试一次。如果可行,您可能需要进入/etc/php5/fpm/php-fpm.conf 并检查usergroup 以及listen.ownerlisten.group。您可能需要将运行 nginx 的用户添加到运行同一 group php 的用户,这样您就不会遇到问题。通常 php sock 具有权限 0660 你试过了吗:chown -R www-data:www-data /home/benu/home/forge/ssc-portal。还是chmod +x /home/benu/home/forge/ssc-portal/index.php 我已经准备好了。我的网站正在加载。这个answer 对我有用。 【参考方案1】:

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

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

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

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

【讨论】:

另外,我犯过很多次的错误是忘记从我的 laravel 项目的根目录运行 php artisan key:generate。如果不设置APP_KEY环境变量,即使你的nginx配置正确,也会报403错误。 编辑完config文件后,别忘了reload file config nginx,在终端这个命令:nginx -s reload【参考方案2】:

你需要对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;

【讨论】:

本质上,你需要一个php定位规则。 我在default 文件中添加了您的代码。我运行sudo nxginx restart。我仍然得到相同的结果。【参考方案3】:

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

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

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

我最好的猜测是你的 index.php 文件放错了地方。您是否将其从 ssc-portal 文件夹中移出?

【讨论】:

以上是关于403 Forbidden on nginx/1.4.6 (Ubuntu) - Laravel的主要内容,如果未能解决你的问题,请参考以下文章

403 Forbidden nginx/1.6.2

403 Forbidden on laravel项目,但没有别的

403 Forbidden on wamp server

403 Forbidden on PHPMyAdmin in Puppy Linux

403 Forbidden nginx/1.18.0 (Ubuntu) for Django 3.1,在媒体文件和管理 css 中面临问题

Django Rest Framework + React JWT 身份验证,403 Forbidden on protected views