Nuxt前端搭配Laravel API时Nginx配置出现/api路径重复问题求助
Nginx配置/api前缀重复问题修复方案
问题根源
- 重写规则错误:
@api命名位置的原有重写规则会保留/api前缀传递给Laravel,而Laravelapi.php定义的路由默认自带/api前缀,两层前缀叠加导致需要访问/api/api/xxx才能匹配路由。 - 前端路由配置错误:
location /块的原有try_files规则指向index.php,不符合Nuxt静态站点的路由逻辑,容易引发前端路由异常。 location /api块的路径匹配规则没有正确剥离/api前缀,Laravel接收到的请求路径与预期不符。- 末尾多余的配置引入规则会导致循环加载:当前配置文件本身存放在
sites-available目录下,再引入同目录下所有配置会触发递归加载,引发Nginx启动异常。
修复后的完整配置
server { listen 80; root /var/www/html/nuxt-apt-front/dist; index index.html index.htm index.nginx-debian.html; server_name example.com; # Nuxt前端路由配置 location / { try_files $uri $uri/ /index.html; } # Laravel API配置,加^~确保优先匹配该规则 location ^~ /api { root /var/www/html/laravel-api/public; # 先剥离/api前缀再匹配路径 rewrite ^/api/(.*)$ /$1 break; 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 { # 重写时剥离/api前缀,直接传递路由参数给Laravel入口 rewrite ^/api/(.*)$ /index.php?/$1 last; } }
生效步骤
- 执行
nginx -t检查配置语法是否正确 - 配置验证通过后执行
systemctl reload nginx重载Nginx配置 - 直接访问
http://example.com/api/login/google验证接口是否正常响应
内容的提问来源于stack exchange,提问作者chewie
相关产品推荐
相关产品推荐

