前端和运维的哪些爱

完成内容

  • 完成 4-5 个接口的前端联调工作
  • 接入并测试微信支付流程
  • 协助运维排查接口 404 的部署问题

Nginx 404 排查经历

问题现象

前端部署后,所有接口统一返回 404 Not Found

后端确认服务已正常启动,因此开始排查前端与 Nginx 配置。


排查过程

1. 检查前端请求前缀(baseUrl)

前端配置的请求前缀为:

复制代码
/api

Nginx 中转发规则:

复制代码
location /api/ {
    proxy_pass http://backend/;
}

两边一致,但访问依然报 404。

2. 检查后端路径

Controller 映射路径正常,但后台日志显示:请求未到达后端

这说明问题还是出在 Nginx 转发链路。

3. 验证实际可访问路径

让运维提供后端真实可访问地址后发现:

后端部署时多加了一个服务前缀,例如:

复制代码
/server-prefix

实际路径变成:

复制代码
/server-prefix/user/info

但前端与 Nginx 都没有拼接这个前缀,因此全部 404。


最终解决方案

  • 前端修改配置文件中的 baseUrl重新打包:

    /server-prefix

  • 更新 Nginx:

    location /server-prefix {
    proxy_pass http://backend;
    }

修改后重新部署 → 全部接口恢复正常。


🎉 今日总结

  • 完成接口联调与支付流程接入
  • 协助定位 Nginx 转发与后端路径不一致的问题
  • 问题根本原因:后端部署新增路径前缀但未同步告知

整体工作顺利,排查过程也帮助团队更好梳理了路径配置规则。

Nginx 转发关键知识总结

## 1. Nginx 路径匹配规则

1.1 精确匹配 (=)

nginx 复制代码
location = /api {
}

只匹配完全等于 /api 的请求。


1.2 普通前缀匹配

nginx 复制代码
location /api {
}

匹配所有以 /api 开头的请求。


1.3 最常用:/api/ 前缀匹配

nginx 复制代码
location /api/ {
}
  • 匹配所有以 /api/ 开头的路径
  • 匹配到的部分 /api/ 会被处理用于后续的转发逻辑

适用于大多数前后端分离项目的 API 转发。


1.4 正则匹配(~ / ~*

nginx 复制代码
location ~ \.php$ {
}

用于正则判断,不常用于 API 场景。


## 2. proxy_pass 加斜杠 vs 不加斜杠 的区别(重点!)

假设如下配置:

nginx 复制代码
location /api/ {
    proxy_pass http://backend/;
}

2.1 proxy_pass 结尾带 /(常用于 API)

  • 删除 location 中匹配到的部分 (如 /api/
  • 然后把剩余路径拼到 proxy_pass 后

示例:

请求:

复制代码
/api/user/info

后端收到:

复制代码
/user/info

这是接口转发最常用、最安全的写法。


2.2 proxy_pass 结尾不带 /

  • 不会删除匹配到的部分
  • 请求路径整体追加到 proxy_pass 后

示例:

nginx 复制代码
location /api/ {
    proxy_pass http://backend;
}

请求:

复制代码
/api/user/info

后端收到:

复制代码
/api/user/info

最关键总结表

location proxy_pass 后端最终收到路径
/api/ http://backend/ /user/info
/api/ http://backend /api/user/info

区别就在于 proxy_pass 后面有没有 /


## 3. 什么时候应该加 /

推荐规则:

需求 写法 原因
去掉 /api 前缀(最常用) proxy_pass http://backend/; 自动移除匹配前缀,路径更干净
保留 /api 前缀 proxy_pass http://backend; 原样转发完整路径

## 4. 为什么会出现转发后 404?(与你的场景对应)

问题原因:

  • 前端访问:/api/user/info
  • Nginx 去掉 /api/ → 转发 /user/info
  • 但后端真实路径是:/server-prefix/user/info

路径不一致 → 404

最终通过:

  • 前端 baseUrl 增加 /server-prefix
  • Nginx proxy_pass 增加 /server-prefix

才使路径一致。


## 5. 可引用的知识点总结

复制代码
Nginx 中,location 用于匹配请求路径,proxy_pass 用于决定转发后的最终路径。
proxy_pass 末尾加不加 '/' 会影响路径是否被替换:

- 加 '/':去掉匹配部分(`/api/`),再拼接剩余路径
- 不加 '/':完整原路径追加到 proxy_pass 后

因此,location /api/ + proxy_pass http://backend/ 是最常用的 API 转发模式。
相关推荐
JustHappy7 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了
前端·后端·网络协议
snow@li7 小时前
SEO-文章标题:写文章时候,分类+主标题+大纲+解释 作为标题 / 不点进去也知道全文覆盖什么 / 标题即架构
前端
kyriewen8 小时前
Git Commit 前自动修复代码风格?配置 Husky + lint-staged,从此 CR 只聊逻辑
前端·git·面试
小和尚同志8 小时前
AI 自动化测试探索(一):Playwright MCP
前端·人工智能·aigc
老马识途2.09 小时前
在AI的帮助下理解spring的启动过程
java·前端·spring
徐小夕9 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
运筹vivo@9 小时前
Python ContextVar 底层机制与内存模型拆解
前端·数据库·python
#麻辣小龙虾#11 小时前
基于vue3.0开发一款【固废与废气运维管理系统】(支持源码)
前端·vue.js·vue3
Cosolar11 小时前
Docsify零构建文档站完全指南:从快速搭建到企业级部署
前端·开源·github
weixin_4713830311 小时前
Taro-02-页面路由
前端·taro