首页 >后端开发 >Golang >gondola:为什么不使用轻量级且简单的基于 YAML 的反向代理?

gondola:为什么不使用轻量级且简单的基于 YAML 的反向代理?

王林
王林原创
2024-08-12 06:08:071100浏览

gondola: Why not use a lightweight and simple YAML-based reverse proxy?

什么是贡多拉?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn