Mobile wallpaper
1171 字
6 分钟

使用Netlify反代网站加速大陆访问

2025-07-31
浏览量 加载中...
开始前你需要进行一些准备
  • 一个GitHub账号
  • 一个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-shirt
from 规则中的 * 就匹配到了 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
许可协议
CC BY-NC-SA 4.0
最后更新于 2025-07-31,距今已过 108 天

部分内容可能已过时

评论区

目录