12

使用Cloudflare加速vercel

 3 years ago
source link: https://www.hin.cool/posts/cfvercel.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
使用Cloudflare加速vercel - 瓦解的生活记事

使用Cloudflare加速vercel

cfvercel.jpg

  Vercel本身有边缘网络节点,在国内的速度其实还不错,即便后来流量改道去了新加坡。但是为什么要使用cloudflare来加速vercel,因为vercel前段时间出现过被屏蔽的情况(详见《vercel无法访问带来哪些影响》)。cloudflare虽然速度不是特别快,比较免费版无法使用大陆节点,但是用来防止部署在vercel上面的项目再次出现无法访问的情况也算是一个不错的选择。

  根据vercel的官方文档,将cloudflare(以下简称CF)与vercel结合使用有两种方法。第一种无代理(仅限DNS)的方法不能避免我们上述提到的问题,所以使用第二种,但是文档本身可能不那么好理解,因此分享这篇日志提供参考。

替换域名DNS服务器

  将域名添加到CF之后,需要在你的域名注册商处修改DNS服务器为CF提供的DNS,通常为mia.ns.cloudflare.comrick.ns.cloudflare.com。以腾讯云为例,在Dnspod无法修改NS记录且修改也无效,需要登陆腾讯云控制台,在域名处点击管理,然后找到DNS服务器进行修改。

在此处修改DNS

解析到vercel

  进入CF中域名控制台,点击上方DNS图标,添加记录,A记录或者CNAME记录解析到你部署在vercel的项目。但是这个时候vercel仍然会显示未正确配置,并且这个时候访问很有可能返回错误。因为当 vercel 构建项目时,构建过程的最后一步是颁发 SSL 证书。作为此步骤的一部分,vercel 向 域名/.well-known/acme-challenge 发出 HTTP 请求。如果此 HTTP 请求被重定向到 HTTPS,Vercel 将无法颁发 SSL 证书。

525错误,即证书问题

  根据文档我们来用命令进行验证(注意协议是http):

curl http://example.com/.well-known/acme-challenge -I

  如果能通过域名访问vercel将会返回:

curl http://example.com/.well-known/acme-challenge -I
HTTP/1.1 404 Not Found

  如果运行命令收到3xx重定向,那么CF会阻止访问此路由,且vercel会将域名标记为未配置。

curl http://example.com/.well-known/acme-challenge -I
HTTP/1.1 308 Moved Permanently
本机测试结果为301重定向

配置cloudflare规则

创建屏蔽规则

  为防止上述请求被重定向,需要通过以下方式创建https 例外页面规则:

  1. 在CF控制台的“规则”选项卡中选择“创建页面规则”;

  2. 在“如果 URL 匹配”文本字段中输入 *example.com/.well-known/*

  3. 从“选择设置”下拉列表中选择“SSL”,然后从“选择 SSL 设置”下拉列表中选择“关”;

  4. 点击“保存并部署”按钮。

cloudflare规则设置

   说明:这个时候使用curl命令测试,不出意外返回应该就是HTTP/1.1 404 Not Found,那么你的域名便可正常访问。如果仍然是301重定向,尝试关闭CF中的始终使用HTTPS。

重定向(待定)

  为确保所有其他 HTTP 请求继续重定向到 HTTPS,请通过以下方式创建另一个页面规则:

  1. 禁用“SSL/TLS”选项卡的“边缘证书”部分中的“始终使用 HTTPS”设置。

  2. 在“页面规则”选项卡中选择“创建页面规则”按钮。

  3. 在“如果 URL 匹配”文本字段中输入“http://*example.com*” 。

  4. 从“选择设置”下拉菜单中选择“始终使用 HTTPS”。

  5. 点击“保存并部署”。

  说明:这一步骤是国外一位博主分享的,事实上经我测试无需这一步,可能是因为我主域名并非使用CF的这个域名。

  此前分享国外可用的免费CDN时便提到过cloudflare,虽然有时候人们戏称它为减速CDN(针对中国大陆地区),但是实际速度也不是想象中那么慢,甚至比我直接解析到vercel新ip的域名速度要快,因此本站将在接下来可能较长时间内使用CF+vercel的waline服务地址来提升加载和提交速度。如果有任何问题欢迎随时向博主反馈。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK