一、背景
在Render上面部署了一个自己的服务,仅用于自己使用,想要鉴权一下才能使用,方案有:
- 自己在代码中开发鉴权功能
- 使用Nginx Basic Auth或者Cloudflare Access等
这个场景对于我来说,明显用Access更好,不用改代码,不用维护一堆鉴权的bug和安全风险,而且也不用自己部署Nginx之类的,直接踩一踩Cloudflare配置的坑就行了。
效果如下,访问的时候直接进入验证页,输入白名单里面的邮箱,cf会发送临时验证码,不在白名单的邮箱,不会发送验证码
Access的额度:
Account limits
Reference information for Account limits in Cloudflare One.
二、具体流程
2.1.免费域名
不能使用Render提供的对外访问域名,因为想要Access必须得域名托管cf代理,并且不能A帐号在cf配置了一个域名,B帐号使用这个域名配置Access。
所以这里得有个自己的域名,我用的是免费域名:https://dash.domain.digitalplat.org/registration
注册的时候信息随便填,包括手机号,地址随便打abc都行,邮箱填对就行了
2.2.域名托管cf
在 https://dash.cloudflare.com 这里添加一个域名,然后得到dns解析地址,填到
免费域名服务商那里,这个教程太多了,就不在这里展开。
2.3.在Render验证免费域名
- 在 Seetings的Custom Domains里面先关闭 Render Subdomain
- 添加免费域名进去,这时候需要验证

- 在cf中添加解析记录,1~4这个地方得填对,不要开启dns代理,需要填入两个CNAME的记录,然后回到Render验证通过

- Render那边验证通过后,修改记录,改为开启代理

2.3.开启Access
- 点击Zero Trust

- 点击应用程序

- 新建应用程序,选择自托管

- 域选择免费域名,其他留空

- 创建一个策略,这里示例只能某些邮件登陆的策略,然后点击保存

- 身份认证选择onetimepin

- 点击保存,这样就算开启了
- 使用curl一下免费域名,如果出现302,则成功了,如果显示200,证明没有被Access托管
curl -I https://xxxxx.qzz.io HTTP/2 302
三、Access的日志
四、踩过的坑
一直没有被Access托管,访问免费域名直接就进入首页了,叫codex查了一下是得CNAME验证才行。
我之前CNAME验证失败了,就是因为打开了cf的DNS代理,所以我改为A记录验证通过,但是Render那边不支持A记录被Access托管。。。
1 个帖子 - 1 位参与者