You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt前端搭配Laravel API时Nginx配置出现/api路径重复问题求助

Nginx配置/api前缀重复问题修复方案

问题根源

  • 重写规则错误:@api命名位置的原有重写规则会保留/api前缀传递给Laravel,而Laravel api.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:45:05