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

如何为同时包含客户端和服务端代码的项目配置Nginx rewrite规则

现有Apache配置合理性说明

你当前使用的Apache重写规则逻辑完全匹配你提出的转发需求,没有明显问题:

  • 第一条规则优先匹配非/api/开头、带后缀的静态资源,转发到build目录下对应路径,L标记停止后续匹配,逻辑符合要求
  • 第二条规则匹配非/api/开头的非根路径前端路由,全部指向build/index.html,适配单页应用的前端路由需求
  • 第三条规则将所有/api/开头的请求转发到controllers/api下对应路径,QSA保留查询参数、NE不对特殊字符转义,符合接口转发要求

Nginx等效配置

以下配置和你原有Apache规则效果完全一致,使用前请替换路径、域名为你线上服务器的实际值:

server {
    listen 80;
    server_name demo.com; # 替换为你的实际线上域名
    root /www/wwwroot/demo; # 替换为你项目demo文件夹在服务器上的绝对路径
    index index.html index.php;

    # 处理 /api 开头的接口请求
    location ~ ^/api/(.*)$ {
        rewrite ^/api/(.*)$ /controllers/api/$1 break;
    }

    # 处理带后缀的静态资源请求
    location ~ .*\.\w+$ {
        # 排除/api路径下的请求
        if ($request_uri !~ ^/api/) {
            rewrite ^/(.*)$ /build/$1 break;
        }
    }

    # 兜底规则:所有其余请求走前端入口,适配SPA路由
    location / {
        try_files $uri $uri/ /build/index.html;
    }

    # PHP解析配置,若使用PHP接口必须补充
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000; # 替换为你的php-fpm实际监听地址
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

配置说明

  • Nginx的location匹配优先级为「精确匹配 > 正则匹配 > 普通前缀匹配」,上述配置的规则顺序保证接口请求优先命中转发规则,不会被静态资源、前端路由规则覆盖
  • 静态资源转发规则增加了/api路径排除逻辑,避免接口请求被误转发到build目录
  • 若部署HTTPS站点,仅需补充443端口监听、SSL证书配置即可,转发规则无需修改

内容的提问来源于stack exchange,提问作者Hao Wu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:05