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

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

王林
王林オリジナル
2024-08-12 06:08:071100ブラウズ

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 までご連絡ください。