Nuxt 前端与 Larvalel api Nginx 配置
Nuxt Front end with Larvalel api Nginx configuration
我在同一台服务器上有一个带有 Laravel API 的 Nuxt 应用程序,我 运行 遇到 nginx 正在复制 /api 和 /api/api 因为我正在使用 laravel api.php.
这是我的设置。我在 sites-available 下只有一个简单的 conf,位于 sites-enable 的半链接上。
server {
listen 80;
root /var/www/html/nuxt-apt-front/dist;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /api{
alias "/var/www/html/laravel-api/public";
try_files $uri $uri/ @api;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/laravel-api/public/index.php;
}
}
location @api {
rewrite /api/(.*)$ /api/index.php?/ last;
}
include /etc/nginx/sites-available/*.conf;
}
知道我可能做错了什么吗?
理想情况下,我想路由到 /api for laravel
http://example.com/api/login/google
现在,如果我在下面有这个,它似乎可以工作。
http://example.com/api/api/login/google
api.php
的例子
// 通过google登录方式登录。
Route::get('login/google', [GoogleAuthController::class, 'redirect']);
Route::get('login/google/callback', [GoogleAuthController::class, 'callback']);
如上所述,如果您想保持 Nginx 文件不变,请在 RouteServiceProvider
中更改以下代码:
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
对此:
Route::middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
有点不言自明,每个api route/call都加了前缀。通过删除它,它只是被遗漏了,只有你的 Nginx 配置附加了一个。
我在同一台服务器上有一个带有 Laravel API 的 Nuxt 应用程序,我 运行 遇到 nginx 正在复制 /api 和 /api/api 因为我正在使用 laravel api.php.
这是我的设置。我在 sites-available 下只有一个简单的 conf,位于 sites-enable 的半链接上。
server {
listen 80;
root /var/www/html/nuxt-apt-front/dist;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /api{
alias "/var/www/html/laravel-api/public";
try_files $uri $uri/ @api;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/laravel-api/public/index.php;
}
}
location @api {
rewrite /api/(.*)$ /api/index.php?/ last;
}
include /etc/nginx/sites-available/*.conf;
}
知道我可能做错了什么吗?
理想情况下,我想路由到 /api for laravel
http://example.com/api/login/google
现在,如果我在下面有这个,它似乎可以工作。
http://example.com/api/api/login/google
api.php
的例子// 通过google登录方式登录。
Route::get('login/google', [GoogleAuthController::class, 'redirect']);
Route::get('login/google/callback', [GoogleAuthController::class, 'callback']);
如上所述,如果您想保持 Nginx 文件不变,请在 RouteServiceProvider
中更改以下代码:
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
对此:
Route::middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
有点不言自明,每个api route/call都加了前缀。通过删除它,它只是被遗漏了,只有你的 Nginx 配置附加了一个。