gondola:为什么不使用轻量级且简单的基于 YAML 的反向代理?
什么是贡多拉?
gondola 是 Go 制作的反向代理,只需用 YAML 编写配置文件即可轻松使用。
可以在awesome-go找到。
它仅使用Go的标准库实现,并具有以下功能
- 虚拟主机
- 您可以在上游服务器上设置多个主机。
- 配置文件加载器
- 您可以使用YAML格式的配置文件。
- TLS
- 您可以通过准备 TLS 证书来使用 TLS。
- 提供静态文件
- 您可以提供静态文件。
- 访问日志
- 输出代理访问日志和上游服务器访问日志。
- 二进制分布
- 分发交叉编译的二进制文件。
动机
我经营一个名为 bmf-tech.com 的博客,是我用 Go 自己构建的。
博客曾经有一个使用Nginx构建的反向代理。
我的博客系统的架构并不复杂,我想一个可以通过更简单的配置进行操作的反向代理就足够了。
因此我决定构建自己的反向代理,它可以使用更简单的配置文件进行配置,而不是像 Nginx 那样具有灵活语法的配置文件。
我实际上在自己的博客系统中使用了gondola,到目前为止它很简单且易于运行。
缆车的使用方法
您可以通过使用 go get 命令或下载二进制文件来使用 gondola。
go get -u github.com/bmf-san/gondola
二进制文件可从版本中获取。
Docker 镜像也可以从 bmf-san/gondola 获得。
在配置文件中配置代理服务器(gondola)和上游服务器后,只需启动gondola即可。
# example config.yaml proxy: (default) port: 443 read_header_timeout: 2000 shutdown_timeout: 3000 tls_cert_path: certificates/cert.pem tls_key_path: certificates/key.pem static_files: /public/static_files - path: /public/ dir: . /public upstreams: host_name: backend1.local - host_name: backend1.local target: http://backend1:8081 # backend1 is the name of the container - host_name: backend2.local target: http://backend2:8082 # backend2 is the name of the container log_level: 0 # Debug:-4 Info:0 Warn:4 Error:8
按如下方式启动缆车:
gondola -config config.yaml
我们还有_示例,如果您愿意,您可以立即尝试。
在 Go 中实现反向代理
有关 Go 中的反向代理实现,请参阅在 Golang 中实现负载均衡器。
本文介绍了如何实现负载均衡器,但由于它是基于反向代理实现的,因此可能会有所帮助。
贡献
gondola 欢迎问题和 Pull 请求。
当然Star也欢迎。
我们仍然缺少 gondola 的一些功能和实现,因此我们希望继续改进它。
- 正常关机
- 上游服务器健康检查
- 配置文件重新加载
- 通信成本优化
- 负载平衡
- 其他可扩展性实施调整
请随时提供反馈。
以上是gondola:为什么不使用轻量级且简单的基于 YAML 的反向代理?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Golang在并发性上优于C ,而C 在原始速度上优于Golang。1)Golang通过goroutine和channel实现高效并发,适合处理大量并发任务。2)C 通过编译器优化和标准库,提供接近硬件的高性能,适合需要极致优化的应用。

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang适合快速开发和并发场景,C 适用于需要极致性能和低级控制的场景。1)Golang通过垃圾回收和并发机制提升性能,适合高并发Web服务开发。2)C 通过手动内存管理和编译器优化达到极致性能,适用于嵌入式系统开发。

GoimpactsdevelopmentPositationalityThroughSpeed,效率和模拟性。1)速度:gocompilesquicklyandrunseff,ifealforlargeprojects.2)效率:效率:ITScomprehenSevestAndArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增强开发的简单性:3)SimpleflovelmentIcties:3)简单性。

C 更适合需要直接控制硬件资源和高性能优化的场景,而Golang更适合需要快速开发和高并发处理的场景。1.C 的优势在于其接近硬件的特性和高度的优化能力,适合游戏开发等高性能需求。2.Golang的优势在于其简洁的语法和天然的并发支持,适合高并发服务开发。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。

Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。
