前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用 Cloudflare Access - 打造个人私密站点

利用 Cloudflare Access - 打造个人私密站点

作者头像
嘿嘿不务正业
发布于 2023-05-09 03:33:17
发布于 2023-05-09 03:33:17
1.6K0
举报
文章被收录于专栏:嘿嘿的专栏嘿嘿的专栏

最近在白嫖云上搭建了一些小的服务,为了方便使用,这些服务一般会提供 WebUI,然而我并不想让其他人能够使用这些搭建在公网上的个人工具站点。之前也讲到我的白嫖云上的服务都是挂在 Cloudflare 上这样可以很好的隐藏机器的真实 IP 并屏蔽未知的流量,所以想看看 Cloudflare 有没有这样的服务:在进入我的站点前拦截请求并要求进行验证,验证通过后再放行。只能说 Cloudflare 从不让人失望,产品力太强了,果然有提供类似的功能,并且比我预想的还要完善,就是 Cloudflare Access。

使用

要使用 Access 功能,我们需要先从侧边栏进入 Zero Trust:

picture 1

然后从 Zero Trust 的侧边栏进入 Access -> Application:

picture 2

然后点击 Add an application:

picture 3

此时可以选择类型,由于我的是用于拦截 Cloudflare 中的 Proxy 站点,所以我直接选择 Self-hosted,Sass 类型主要针对的是一些 Sass 服务和内网,并没有研究这里不多说。

选择好类型后我们需要输入对应的配置,包括程序的名称、session 的失效时长、域名地址、自定义 Logo 的地址以及认证方式。

picture 4

此处的域名地址支持子域名、主域名和路径,比如我要拦截到 access.heyfe.org 请求就可以将子域名配置为 access,主域名选择 heyfe.org,然后路径留空即可。

至于认证方式默认情况下只有 One-time PIN 这一种,如果需要更多的认证方式可以到 Setting -> Authentication -> Login methods 中添加:

picture 6

具体的添加不细说,点击选择后 Cloudflare 会有详细的指引,基本就是 OAuth 接入流程,但是 Cloudflare 会提供认证回调服务,所以不需要自己搭建任何服务。

当前面的配置都填写完成后点击下一步便会进入具体的规则配置页面:

picture 7

此处我们需要先为策略起一个名字并选择策略的类型是 Allow 还是 Block,还有 Session 的过期时间。

策略类型 Allow 可以理解为白名单,即符合该策略规则的用户可以通过,而 Block 则为黑名单规则相反,此外还有 Bypass 和 Service Auth。

一般而言此处回选择 Allow, Session 则保持默认即可。然后便可以配置具体的规则:

picture 8

此处可以配置多条匹配规则,且规则类型可以是 include、exclude 和 require,然后规则匹配可以使用邮箱、邮箱后缀、IP 范围、国家、认证方式等等。基本可以满足绝大多数可以想到的需求。

picture 9

此处以邮箱为例,可以通过邮箱匹配可以通过的邮箱账户。这里有一个需要注意的地方,录入的邮箱必须是小写字母,其实绝大多数的邮箱认证匹配等都会将邮箱转换为小写,因为我的 Gmail 注册的时候有使用大写字母,所以习惯使用大写,然后这里第一次认证发现没通过。

除了这些基础配置外,Access 还提供了一些进阶配置,可以配置临时认证、申请等功能。

在完成上述配置后,点击下一步 Access 还提供了跨域、Cookie 等配置,一般情况下无需修改:

picture 1

当一切都配置完成后,就可以点击 Add Application 按钮创建了,创建完成后再次打开页面可以看到页面被拦截了进入了 Access 认证页面:

picture 3

当你输入邮箱后 Cloudflare 会给你的邮箱发送一份认证邮件,可以使用邮件中的 Code 进行登陆,也可以直接点击邮箱中的快速认证链接。认证完成后,如果你有权限访问站点,就会进入原始站点,如果没有的话则会展示拦截页面。

如果觉得认证页面和拦截页面不太好看,也可以进入 setting -> General 中进行自定义,不过要注意,只能修改有限的文字、Icon 和背景色等。

picture 4

价格

忘记说了,上面的功能基本上可以认为是完全免费的:

picture 5

最后

用 Cloudflare 也有好多年了,不得不说, Cloudflare 基本能够实现我想想的所有功能,基本算是唯一一个让我完全没有槽点的产品,只能说真的太强了。对于个人开发者而言,提供的所有功能基本都可以免费用到,香是真的香。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嘿前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Go语言可能会遇到的坑
最近在用go开发项目的过程中突然发现一个坑,尤其是对于其它传统语言转来的人来说一不注意就掉坑里了,话不多说,咱看代码:
我的小碗汤
2020/01/13
1K0
由浅入深聊聊Golang中select的实现机制
select是go语言中常用的一个关键字,其用法也一直被用作面试题来考核应聘者。今天,结合代码来分析下select的主要用法。
会呼吸的Coder
2020/02/17
1.5K0
学会 Go select 语句,轻松实现高效并发
在 Go 语言中,Goroutine 和 Channel 是非常重要的并发编程概念,它们可以帮助我们解决并发编程中的各种问题。关于它们的基本概念和用法,前面的文章 一文初探 Goroutine 与 channel 中已经进行了介绍。而本文将重点介绍 select,它是协调多个 channel 的桥梁。
陈明勇
2023/10/15
8390
学会 Go select 语句,轻松实现高效并发
16.Go语言-Select
上面的程序创建了 3 个通道,并在执行 select 语句之前往通道 1 、通道 2 和 通道 3 分别发送数据,在执行 select 语句时,如果有机会的话会运行所有表达式,只要其中一个通道接收到数据,那么就会执行对应的 case 代码,然后退出。所以运行该程序可能输出下面的语句:
面向加薪学习
2022/09/04
2720
【Go】留意 Select 的预求值!
关键在于 recvAndSend 函数的 case ch1 <- <-ch2: 我们希望在一条 case 中从 chan2 中取出数据并放到 chan1 中,但事实上这样会导致死锁,虽然平时谁也不会写出这种神仙代码,但下面这个就很容易被写出来了:
JuneBao
2022/10/26
2160
Golang 基础之基础语法梳理 (二)
单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义,channel就是它们之间的连接。
帽儿山的枪手
2022/03/20
7030
Golang 基础之基础语法梳理 (二)
go 并发模式
boring返回一个channel,不断往里写数据。main调用,并从channel中获取数据,结果如下:
solate
2022/10/28
5750
go 并发模式
Go-并发编程-使用 select 语句实现多路复用(二)
在上面的示例中,我们启动了两个goroutine分别向两个通道中发送数据。然后我们将select语句放在一个无限循环中,以持续监听这两个通道的状态。
堕落飞鸟
2023/04/21
2380
select详解
在某些场景下需要同时从多个通道接收数据。通道在接收数据时,如果没有数据可以接收将会发生阻塞。也许会写出如下代码使用遍历的方式来实现:
Michel_Rolle
2023/11/30
2.7K0
go语言学习-并发编程
1.After函数:起到定时器的作用,指定的纳秒后会向返回的channel中放入一个当前时间(time.Time)的实例。
solate
2019/07/22
6310
如何使用 Go 更好地开发并发程序,纯干货!
Go 语言的并发特性是其一大亮点,今天我们来带着大家一起看看如何使用 Go 更好地开发并发程序?
aoho求索
2021/03/16
5480
如何使用 Go 更好地开发并发程序,纯干货!
《Go小技巧&易错点100例》第二十八篇
在 Go 语言中,runtime.Caller(1) 是 runtime 包提供的一个函数,用于获取当前 goroutine 的调用堆栈中的特定调用者的信息。这里的 1 表示要跳过的调用帧数。具体来说,当你调用 runtime.Caller(1) 时,它会返回调用 runtime.Caller 的函数的调用者的信息。
闫同学
2025/01/23
720
《快学 Go 语言》第 12 课 —— 神秘的地下通道
不同的并行协程之间交流的方式有两种,一种是通过共享变量,另一种是通过队列。Go 语言鼓励使用队列的形式来交流,它单独为协程之间的队列数据交流定制了特殊的语法 —— 通道。
老钱
2018/12/24
4120
《快学 Go 语言》第 12 课 —— 神秘的地下通道
golang中的select详解
加入了默认分支,那么无论涉及通道操作的表达式是否有阻塞,select语句都不会被阻塞。如果那几个表达式都阻塞了,或者说都没有满足求值的条件,那么默认分支就会被选中并执行。
IT工作者
2022/07/01
9710
time.After和select搭配使用时存在的"坑"
在许多大公司代码仓库里,一搜<- time.After关键字有一大堆,而且后面的时间不少都是几分钟。
fliter
2023/06/18
3070
time.After和select搭配使用时存在的"坑"
GoLang协程与通道---中
通道可以被显式的关闭;尽管它们和文件不同:不必每次都关闭。只有在当需要告诉接收者不会再提供新的值的时候,才需要关闭通道。只有发送者需要关闭通道,接收者永远不会需要。
大忽悠爱学习
2022/08/23
8570
Golang Context 包详解
context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。
Michel_Rolle
2023/07/24
3.7K0
Go语言的并发编程:Channels
Channels是Go语言中的一种数据传输机制,允许多个Goroutines之间进行数据交换。Channels类似于管道,可以在Goroutines之间传递数据,实现同步和通信。
数字扫地僧
2024/06/19
1340
A Bite of GoLang(下)
8. Goroutine 8.0、Goroutine介绍 协程 Coroutine 轻量级"线程" 上面的两个特征到底是什么意思呢?下面我们通过具体的事例详细的讲述一下, package main
盛国存
2018/05/14
1.1K1
A Bite of GoLang(下)
Go基础--goroutine和channel
goroutine 在go语言中,每一个并发的执行单元叫做一个goroutine 这里说到并发,所以先解释一下并发和并行的概念: 并发:逻辑上具备同时处理多个任务的能力 并行:物理上在同一时刻执行多个并发任务 当一个程序启动时,其主函数即在一个单独的goroutine中运行,一般这个goroutine是主goroutine 如果想要创建新的goroutine,只需要再执行普通函数或者方法的的前面加上关键字go 通过下面一个例子演示并发的效果,主goroutine会计算第45个斐波那契函数,在计算的同时会循环
coders
2018/03/30
7970
Go基础--goroutine和channel
相关推荐
Go语言可能会遇到的坑
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档