javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > Next.js Proxy

一文搞懂Next.js中Proxy的使用

作者:helloweilei

在Next.js中,Proxy这个概念实际上指向两个不同层面但同样重要的功能,下面就来详细的介绍一下Next.js中的Proxy的使用,感兴趣的可以了解一下

在 Next.js 中,“Proxy” 这个概念实际上指向两个不同层面但同样重要的功能:一个是 Next.js 15 之后内置的、运行在边缘网络上的请求拦截器(原 Middleware),另一个则是通过配置文件实现的、用于转发 API 请求的 Rewrites 代理

简单来说,前者像是应用的门卫,后者则像是应用的传话员

为了帮你更清晰地理解,我把它们的核心区别整理成了一个表格:

特性内置 proxy (原 Middleware)配置 rewrites (反向代理)
核心定位在请求到达页面之前,运行自定义代码进行拦截和处理。将请求从一个路径“映射”到另一个路径(可以是内部或外部URL),对客户端透明。
主要用途鉴权、A/B测试、国际化、日志记录、修改请求/响应头。解决跨域问题、隐藏真实API地址、将旧站点路由平滑过渡到新应用、集成第三方服务。
运行时机在 redirects 之后,beforeFiles rewrites 之前。有三种时机:beforeFiles, afterFiles, fallback,可以在文件系统(页面/静态文件)检查前后执行。
代码位置项目根目录下的 proxy.ts 或 proxy.js 文件。next.config.js 文件中的 async rewrites() 函数。
能力范围可以编程式地返回 NextResponse,实现 redirect, rewrite, 或直接响应。声明式地配置 source 和 destination 映射关系,支持复杂的路径匹配规则。

深入理解:内置proxy(原 Middleware)

从 Next.js 15 开始,原来的 middleware 文件被重命名为 proxy,其功能保持不变。你可以把它想象成一个在服务器上运行、在用户请求到达页面之前的“检查站”。

深入理解:配置rewrites(反向代理)

rewrites 是定义在 next.config.js 中的一个异步函数,它更像是一种“声明式”的代理规则。它告诉 Next.js 服务器:“当用户请求路径 A 时,你悄悄地替我去路径 B 拿到内容,然后返回给用户。”

总结与选择指南

简单来说,如何选择取决于你的业务逻辑:

在开发环境中,rewrites 通常是解决 API 跨域问题的最简单、最标准的方法。而在生产环境中,虽然 rewrites 也可以作为反向代理,但更常见的做法是在 Next.js 应用前面再加一层专业的反向代理服务器(如 Nginx),来处理负载均衡、SSL 终端和安全防护等更底层的网络问题。

到此这篇关于一文搞懂Next.js中Proxy的使用的文章就介绍到这了,更多相关Next.js Proxy内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文