在 Nginx 上将 Laravel 设置为 API 位置块会出现 404

在 Nginx 上将 Laravel 设置为 API 位置块会出现 404

我正在尝试建立一个以 React 为前端、以 Laravel 为后端的网站。我的服务器是一个使用 Ubuntu 上的 Nginx 设置的 AWS 实例。

目前,我在 中有 Laravel /var/www/laravel,在 中有 React 代码/var/www/html。当我访问网站时http://www.website.com,我可以看到我的 React 占位符,但是当我尝试访问 Laravel 时,http://www.website.com./api我得到了 404。

我已正确设置了 Laravel 中的所有权限,所有 php 加载均按预期进行。如果我将默认文件中的所有内容设置为让 Laravel 成为 root,我就能使 Laravel 正常工作。

default我的文件如下所示:

server {

    listen 80 default_server;
    listen [::]:80 default_server;

    index index.html index.htm index.php;

    server_name _;

    location /api {
            root /var/www/laravel/public;
            try_files $uri $uri/ @laravel;
            location ~ \.php$ {
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            }
    }

    location @laravel {
            rewrite /api/(.*)$ /index.php?/$1 last;
    }

    location / {
            root /var/www/html;
            try_files $uri $uri/ =404;
    }

    location ~ /\.(?!well-known).* {
            deny all;
    }
}

我正在尝试学习 Nginx 和 Laravel,因此以上内容是我在 Googlefoo 之后拼凑起来的。

答案1

我敢打赌你应该修复这些行:

fastcgi_param SCRIPT_FILENAME **$request_filename**;  
rewrite /api/(.*)$ **/api**/index.php?/$1 last;

遇到类似的问题并在这里找到答案:
https://serversforhackers.com/c/nginx-php-in-subdirectory

相关内容