nginx,前端配置请求路径,后端接口应该怎么写??

张开发
2026/4/21 2:46:39 15 分钟阅读

分享文章

nginx,前端配置请求路径,后端接口应该怎么写??
你的配置分析nginxlocation /api/ { proxy_pass http://localhost:8080/admin/; }注意proxy_pass最后有一个斜杠/这会影响路径的转发方式。二、路径转发规则规则如果proxy_pass以/结尾原路径中的/api/会被替换为/admin/更准确地说匹配到的部分/api/会被整个删除然后拼接上proxy_pass的路径示例映射前端请求Nginx 转发给后端/api/employee/loginhttp://localhost:8080/admin/employee/login/api/employee/listhttp://localhost:8080/admin/employee/list/api/order/detailhttp://localhost:8080/admin/order/detail三、你的后端接口应该怎么写✅ 正确写法javaRestController RequestMapping(/admin/employee) public class EmployeeController { // 前端调用/api/employee/login // Nginx 转发/admin/employee/login // 最终匹配RequestMapping(/admin/employee) PostMapping(/login) PostMapping(/login) public Result login(RequestBody LoginDTO loginDTO) { // 登录逻辑 return Result.success(); } // 前端调用/api/employee/list // Nginx 转发/admin/employee/list GetMapping(/list) public Result list() { return Result.success(); } }❌ 错误写法java// 错误如果写成这样 RequestMapping(/api/employee) // ❌ 后端没有 /api 路径 public class EmployeeController { PostMapping(/login) public Result login() { // 转发后是 /admin/employee/login匹配不到 /api/employee/login } }四、完整流程示例场景员工登录前端代码javascript// 前端调用 axios.post(/api/employee/login, { username: admin, password: 123456 })Nginx 转发nginxlocation /api/ { proxy_pass http://localhost:8080/admin/; }实际转发给后端http://localhost:8080/admin/employee/login后端接口javaRestController RequestMapping(/admin/employee) public class EmployeeController { PostMapping(/login) public Result login(RequestBody LoginDTO loginDTO) { // 处理登录 // 访问路径/admin/employee/login return Result.success(); } }五、特殊情况如果不以斜杠结尾假设你的配置是nginxlocation /api/ { proxy_pass http://localhost:8080/admin; # 注意没有最后的 / }那么转发规则会不同/api/employee/login→http://localhost:8080/adminemployee/login注意/admin和employee直接拼接缺少斜杠这通常不是你想要的效果所以建议保持配置以/结尾。六、总结你的理解✅RequestMapping(/admin/employee)是正确的✅ 前端调用/api/employee/login也是正确的✅ 后端写/login接口匹配也是正确的核心要点前端路径中的/api/会被 Nginx 替换成/admin/后端接口路径中不要出现/api/应该用/admin/你的RequestMapping(/admin/employee)正好匹配转换后的路径这样配置的好处是前端不需要知道后端的具体路径前缀/admin只需要统一调用/api/xxxNginx 负责做路径映射。

更多文章