ホームページ バックエンド開発 Golang ゴンドラ: 軽量でシンプルな YAML ベースのリバース プロキシを使用してみてはいかがでしょうか?

ゴンドラ: 軽量でシンプルな YAML ベースのリバース プロキシを使用してみてはいかがでしょうか?

Aug 12, 2024 am 06:08 AM

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

ゴンドラって何ですか?

gondola は、YAML で設定ファイルを記述するだけで簡単に利用できる Go 製リバース プロキシです。

awesome-go で見つけることができます。

Go の標準ライブラリのみを使用して実装されており、以下の機能を備えています

  • 仮想ホスト
    • 上流サーバーに複数のホストをセットアップできます。
  • 設定ファイルローダー
    • YAML 形式の構成ファイルを使用できます。
  • TLS
    • TLS証明書を用意することでTLSを利用することができます。
  • 静的ファイルを提供する
    • 静的ファイルを提供できます。
  • アクセスログ
    • プロキシのアクセスログと上流サーバーのアクセスログを出力します。
  • バイナリ配布
    • クロスコンパイルされたバイナリを配布します。

モチベーション

私は bmf-tech.com というブログを運営しています。これは Go で自分で作成したものです。

このブログには、Nginx を使用してリバース プロキシが構築されていました。

私のブログシステムのアーキテクチャは複雑ではないので、よりシンプルな構成で運用できるリバースプロキシで十分だと考えました。

そこで、Nginx のような柔軟な構文を持つ構成ファイルではなく、より単純な構成ファイルで構成できる独自のリバース プロキシを構築することにしました。

私は実際に自分のブログ システムでゴンドラを使用していますが、今のところシンプルで簡単に実行できます。

ゴンドラの利用方法

go get コマンドを使用するか、バイナリをダウンロードすることでゴンドラを使用できます。

go get -u github.com/bmf-san/gondola
ログイン後にコピー

バイナリはリリースから入手できます。

Docker イメージは bmf-san/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
ログイン後にコピー

必要に応じてすぐに試していただける _examples も用意しています。

Go でのリバース プロキシの実装

Go でのリバース プロキシの実装については、「Golang でのロード バランサーの実装」を参照してください。

この記事ではロードバランサーの実装方法を紹介していますが、リバースプロキシの実装をベースにしているので参考になるかもしれません。

貢献

ゴンドラは問題とプルリクエストを歓迎します。

もちろんスターさんも大歓迎です。

ゴンドラの機能や実装がまだ不足している部分があるので、引き続き改善していきたいと思います。

  • 正常なシャットダウン
  • アップストリームサーバーのヘルスチェック
  • 設定ファイルのリロード
  • 通信コストの最適化
  • 負荷分散
  • スケーラビリティのためのその他の実装調整

お気軽にフィードバックをお寄せください。

以上がゴンドラ: 軽量でシンプルな YAML ベースのリバース プロキシを使用してみてはいかがでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golang vs. Python:長所と短所 Golang vs. Python:長所と短所 Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

See all articles