首頁 >後端開發 >Golang >gondola:為什麼不使用輕量級且簡單的基於 YAML 的反向代理?

gondola:為什麼不使用輕量級且簡單的基於 YAML 的反向代理?

王林
王林原創
2024-08-12 06:08:071096瀏覽

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