1171 字
6 分钟
使用Netlify反代网站加速大陆访问
开始前你需要进行一些准备
netlify.toml
首先创建一个github仓库(名称随意,可为私有仓库)
仓库创建完成后点击 creating a new file (创建一个新文件)
文件名填写netlify.toml,然后将以下内容复制到文件内容
[[redirects]] from = "/*" to = "https://your-original-site.com/:splat" status = 200 force = true把your-original-site.com替换为你需要反代的网站,不要修改其他内容,特别是:splat
参数解释(AIGC 无视即可,没必要看):
45 collapsed lines
[[redirects]]作用: 这是一个标记,用来告诉 Netlify “接下来我要定义一条或多条重定向/重写规则”。解释: netlify.toml 是一个配置文件,可以包含多种不同功能的设置(如插件、函数、headers等)。[[redirects]] 表明这是一个规则块的开始。您可以拥有多个 [[redirects]] 块来定义不同的规则。
from = "/*"作用: 定义这条规则要匹配的来源路径。解释: from 指定了当用户访问您的 Netlify 站点时,什么样的 URL 路径会触发这条规则。/ 代表网站的根目录。* 是一个通配符(wildcard),可以匹配任何内容。所以 /* 的意思就是 “匹配所有访问我这个 Netlify 站点的请求”,无论是首页 (https://my-proxy.netlify.app/),还是某个具体页面 (https://my-proxy.netlify.app/about/contact.html),或是图片等静态资源,都会被这条规则捕获。to = "https://your-original-site.com/:splat"作用: 定义匹配成功后要转发到的目标地址。解释: to 指定了 Netlify 应该去哪里获取内容。https://your-original-site.com/ 是您实际网站的地址,也就是源站。:splat 是一个占位符,它的值会自动替换为 from 路径中 * 通配符匹配到的那部分内容。示例:当用户访问 https://my-proxy.netlify.app/products/cool-shirtfrom 规则中的 * 就匹配到了 products/cool-shirt 这部分。于是 :splat 的值就变成了 products/cool-shirt。最终 Netlify 会去请求的目标地址就是 https://your-original-site.com/products/cool-shirt。这确保了您的网站路径结构被完整地保留了下来。
status = 200作用: 定义 Netlify 响应给浏览器的 HTTP 状态码。这是实现“反向代理”而非“跳转”的核心。解释:通常的跳转 (Redirect) 会使用 301 (永久移动) 或 302 (临时移动) 状态码。浏览器收到 301/302 后,会清空当前页面,然后地址栏会变成 to 指定的新地址,再去请求新地址。而 200 (OK) 状态码告诉浏览器:“请求成功了,这就是你要的内容”。Netlify 在后台请求了源站的内容,然后把内容“借”过来,以自己的名义(和 200 状态码)发给浏览器。效果就是: 用户的浏览器地址栏不会改变,依然显示您的 Netlify 域名,但看到的内容却是从您的源站获取的。这就是重写 (Rewrite) 或者说反向代理的效果。
force = true作用: 强制执行此规则,使其拥有最高优先级。解释:Netlify 处理一个请求时,有一个默认的顺序:
首先,检查部署的文件中是否有与请求路径完全匹配的静态文件。例如,如果用户请求 /about,Netlify 会先找 about.html 文件。如果没找到,它才会去检查 _redirects 文件或 netlify.toml 里的重定向/重写规则。但是,当您设置了 force = true 后,这个顺序就被颠覆了:
首先,Netlify 会强制检查并应用这条规则。它会忽略任何可能存在于部署中的同名静态文件。为什么在反向代理场景下它如此重要?
在使用“拖拽部署”时,您的部署包里除了 netlify.toml 之外没有任何其他文件,所以加不加 force 效果可能一样。但是,这是一个非常保险的设置。它确保了无论您部署了什么内容(哪怕不小心拖进去一个 index.html 文件),这条反向代理规则都永远生效。它向 Netlify 发出了一个明确的指令:“不要管我上传了什么文件,所有流量 (/*) 都必须、无条件地通过这条代理规则来处理。”修改完成后右上角提交更改
Netlify
打开Netlify(确保已登录账户),然后点击Add new project,Import an existing project
选择github(如果没授权就授权),选择你刚刚创建的仓库,划到最下面选择Deploy
左侧目录找到Domain management,在这里添加你的域名,CNAME的内容使用apex-loadbalancer.netlify.com
等待Netlify自动申请SSL证书完成,然后就可以以HTTPS访问网站了
赞助支持
如果这篇文章对你有帮助,欢迎赞助支持!
使用Netlify反代网站加速大陆访问
https://blog.cmtyx.top/posts/accelerate-site-with-netlify-proxy/ 最后更新于 2025-07-31,距今已过 108 天
部分内容可能已过时