我正在尝试建立一个以 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