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可優化性能。

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

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

Golang適合快速開發和並發場景,C 適用於需要極致性能和低級控制的場景。 1)Golang通過垃圾回收和並發機制提升性能,適合高並發Web服務開發。 2)C 通過手動內存管理和編譯器優化達到極致性能,適用於嵌入式系統開發。

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

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t
