前后端分离路由重写时 Nginx URL 重写怎么配

轻静同学_7567

轻静同学_7567

2026-08-14

171人浏览

原创

nginx在前后端分离项目中核心目标是:①通过try_files实现spa路由fallback,使前端路由如/system/user返回index.html;②通过rewrite剥离/api/前缀并proxy_pass精准代理后端接口,避免404。

前后端分离路由重写时 nginx url 重写怎么配

前后端分离项目中,Nginx 的 URL 重写核心目标就两个:让前端路由能正确加载(SPA fallback),同时把 API 请求精准转发给后端。配置不难,但容易因路径前缀、正则匹配或 flag 用错而 404 或接口 404。

关键不是写多少规则,而是理清请求流向

用户访问 /system/user,这其实是前端 Vue Router 的路由,Nginx 不该去找这个路径的文件,而应返回 index.html;
用户访问 /api/login 或 /cnAdminRy/login,这属于后端接口,Nginx 必须准确识别并代理过去,且路径要处理干净。


前端路由必须配 try_files(不是 rewrite)

Vue/React 等 SPA 刷新页面时,浏览器会真实向 Nginx 请求 /system/user 这类路径。Nginx 默认找不到对应文件,直接返回 404。
解决办法是:在静态资源 location 中用 try_files 做兜底。

location / {
    root   /path/to/dist;
    index  index.html;
    try_files $uri $uri/ /index.html;
}
  • $uri:先尝试匹配真实文件(如 /js/app.js)
  • $uri/:再尝试作为目录(如 /assets/)
  • /index.html:都失败就返回首页,交由前端路由接管
    ✅ 这条规则覆盖所有非 API 请求,无需 rewrite

后端接口需用 rewrite 剥离前缀(常见于带 context-path 场景)

若后端 Spring Boot 配了 server.servlet.context-path=/cnAdminRy,前端请求本应发到 /cnAdminRy/login,但你希望前端代码里写 /api/login 更简洁——那就让 Nginx 把 /api/ 开头的请求,去掉 /api,再转发。

location ^~ /api/ {
    rewrite ^/api/(.*)$ /$1 break;
    proxy_pass http://backend:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
  • ^~ /api/:优先前缀匹配,避免被 / 的 location 拦截
  • rewrite ^/api/(.*)$ /$1 break;:把 /api/login → /login,break 表示不继续执行其他 rewrite,直接走 proxy_pass
  • proxy_pass http://backend:8080;:注意这里末尾不加 /,否则会丢掉路径;如果后端有 context-path,就写成 http://backend:8080/cnAdminRy

若后端没设 context-path(即根路径运行),proxy_pass 直接指向 http://backend:8080 即可;
若前端请求已含完整 context-path(如 /cnAdminRy/login),则无需 rewrite,直接 proxy_pass 即可。


多级 API 路径要防匹配过窄

常见错误:只写 location ~ ^/api/$,结果 /api/system/user 就匹配不上。

✅ 正确写法是:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • location ^~ /api/ —— 推荐,前缀匹配,高效且稳定
  • location ~ ^/api/.*$ —— 也可,但正则匹配略慢,且易受其他 location 干扰

避免写成 location ~ ^/api/[^\/]+/[^\/]+$ 这种限定两层的规则,太脆弱。实际接口深度不可控(如 /api/v2/role/list?size=10)。


静态资源路径别被 rewrite 错误干扰

前端打包时若设置了 publicPath: '/cnAdminRy/',那生成的 index.html 里 <script src="/cnAdminRy/js/app.js"></script> 是带前缀的。
此时 Nginx 需确保 /cnAdminRy/js/... 能正确映射到 dist 目录下的文件。

有两种解法:

  • 方式一(推荐):Nginx 用 alias 映射子路径

    location /cnAdminRy/ {
        alias /path/to/dist/;
        try_files $uri $uri/ /cnAdminRy/index.html;
    }
  • 方式二:前端打包用 publicPath: '/',Nginx 用子路径代理统一处理
    配合上面的 location ^~ /api/ 和 location /,再加一条:

    location /cnAdminRy/ {
        try_files $uri $uri/ /index.html;
    }

    但需确保 index.html 中资源引用是相对路径或根路径,否则 JS/CSS 加载失败。

不复杂但容易忽略。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

nginx 路由

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2323

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6090

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5426

10

nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

383

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3307

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

6005

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

561

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1476

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3938

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习