403 Forbidden on nginx/1.4.6 (Ubuntu) - Laravel

2022-08-30 17:50:10

我不断得到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;

        }

}

更新

我按照这个指示: 这里


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


答案 1

您需要为指令指定绝对路径。Nginx 使用编译时通过 --前缀开关设置的目录。默认情况下,此值为 。root/usr/local/nginx

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

如果你把你的指令设置为一个绝对路径,比如nginx会找到这些文件。root/var/www/laravel-app/public/

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


答案 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;
}

推荐