开源包 ngrok-go 旨在简化将 Ingress 嵌入 Go 应用的过程

Ngrok-go 概述

Ngrok-go 是一个符合 Go 语言习惯的包,允许 Go 应用程序通过 ngrok 的 ingress-as-a-service 平台安全地接收网络请求,就像它们在本地端口上监听一样。

主要功能

Ngrok-go 旨在简化网络入口的创建,通过处理开发者通常需要设置的低级网络原语,包括 DNS、TLS 证书、网络级别的 CIDR 策略、IP 和子网路由、负载均衡、VPN 和 NAT。

嵌入 ngrok 到 Go 应用

开发者只需调用 ngrok-go 提供的 ngrok.Listen 原语即可将 ngrok 嵌入到 Go 应用中。如果环境中存在 ngrok authtoken,调用 Listen 将启动与 ngrok 的安全且持久的连接,并传输任何指定的配置需求,如 URL、认证、IP 限制等。

示例代码

ngrok.Listen(ctx, 
       config.HTTPEndpoint(
        config.WithDomain("my-app.ngrok.io"),
        config.WithAllowCDIRString("192.30.252.0/22"),
        config.WithCircuigBreaker(0.8),
        config.WithCompression(),
        config.WithOAuth("github")
       ), 
       ngrok.WithAuthtokenFromEnv(),
)

安全性与可移植性

所有在调用 Listen 时指定的策略都由 ngrok 强制执行,ngrok 会在边缘拒绝所有未经授权的请求,这意味着只有有效的请求才能到达 Go 应用。Ngrok-go 的另一个优势是其入口的“可移植性”,这意味着使用它的应用无论在底层平台是裸机、虚拟机、AWS、Azure 还是 Kubernetes,都能以相同的方式运行。

多语言支持

虽然 ngrok 选择 Go 作为第一个支持的语言,但对其他语言的支持已经在进行中,包括 Rust 和 JavaScript。其他语言如 Java、C#、Python 和 Ruby 也将很快纳入路线图,基于用户反馈。

资源与入门

如果你有兴趣尝试,ngrok-go 已在 GitHub 上提供,并且可以从官方入门指南开始。

阅读 24
0 条评论