怎么用Netlify反代

767 字
4 分钟
怎么用Netlify反代
🌸 Netlify 反向代理小教程
用 Netlify 轻松实现反向代理,解决 CORS、隐藏真实接口地址,还超简单!
适合前端、独立开发者和博客站长~
✨ 什么是 Netlify 反向代理?
Netlify 的 Rewrites / Proxies 功能,本质上是把重定向状态码设为 200。
浏览器地址栏不会变,但请求会由 Netlify 的 CDN 在后端帮你转发到目标地址。
超级适合:
- 解决跨域(CORS)问题
- 隐藏真实 API 地址
- 把多个服务统一到一个域名下
- 网站迁移时平滑过渡
官方文档:Rewrites and proxies
🧁 方法一:使用 _redirects 文件(最简单)
在网站的发布目录(通常是 public、dist、build 或根目录)下创建 _redirects 文件(注意:没有扩展名)。
# 把 /api/* 代理到 https://api.example.com/*/api/* https://api.example.com/:splat 200
# 强制代理(即使本地有同名文件也优先代理)/api/* https://api.example.com/:splat 200!
# 代理整个网站/* https://target-site.com/:splat 200:splat会自动捕获后面的所有路径- 末尾加
!表示强制生效(对应force = true)
🍬 方法二:使用 netlify.toml(推荐,功能更强)
在项目根目录创建或编辑 netlify.toml:
[[redirects]] from = "/api/*" to = "https://api.example.com/:splat" status = 200 force = true
# 还可以添加自定义请求头哦~[[redirects]] from = "/search" to = "https://api.mysearch.com" status = 200 force = true headers = {X-From = "Netlify", X-Custom = "value"}🍓 常见使用场景示例
1. 代理第三方 API(解决 CORS)
[[redirects]] from = "/api/*" to = "https://api.example.com/:splat" status = 200 force = true前端直接请求 /api/xxx 就行,超级方便!
2. 代理到另一个 Netlify 站点
[[redirects]] from = "/other/*" to = "https://my-other-site.netlify.app/:splat" status = 200 force = true推荐使用 .netlify.app 域名。
3. 代理整个旧网站(迁移场景)
/* https://old-site.com/:splat 200!📌 小贴士与注意事项
| 项目 | 说明 |
|---|---|
| 缓存 | 代理响应默认不缓存。如果目标支持 ETag / Last-Modified,可以自动缓存 |
| 自定义头 | 只能在 netlify.toml 中添加自定义请求头 |
| 规则顺序 | 从上到下匹配,更具体的规则要写在前面 |
| 本地测试 | 使用 netlify dev 命令即可本地预览 |
| 限制 | 不是完整的 Nginx 级反向代理,复杂场景建议使用 Edge Functions |
🌈 更复杂的需求怎么办?
如果需要:
- 任意 URL 通用代理
- 自动重写 HTML 内容
- 添加密码保护
- 更灵活的逻辑处理
可以尝试使用 Netlify Edge Functions(基于 Deno)。
GitHub 上搜索 netlify proxy edge function 有很多现成模板可以参考~
✅ 快速验证方法
部署完成后,打开浏览器开发者工具(F12)→ Network 面板:
- 访问你的域名 + 代理路径
- 看请求状态码是否为
200 - 确认返回内容来自目标站点
如果一切正常,就成功啦!🎉
💌 写在最后
Netlify 的反向代理功能真的很贴心,配置简单、全球 CDN 加速、免费额度也够用。
希望这篇小教程能帮到你~
有具体需求(比如代理某个 AI 接口、整个博客、或者复杂路由)随时告诉我,我可以帮你写出更精确的配置~
祝部署顺利,代码无 Bug!✨
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!




.e6o1lr2e_22vNff.webp)

.CkSiGWw9_Z6Ov0I.webp)
.CNVy-vLR_Zpqk4w.webp)
.Bt7j5zNk_1QaJjc.webp)











.Bsk1Y3LR_1GIIdO.webp)










.CWKKwC1J_144Qps.webp)
.CjlOMn9C_Z5vpJK.webp)
.Dy2dA-sE_xgFl6.webp)

.sHOe2YnW_Z1x5iBL.webp)
.C3M_L2Iv_xFf5M.webp)