ゴンドラ: 軽量でシンプルな YAML ベースのリバース プロキシを使用してみてはいかがでしょうか?
ゴンドラって何ですか?
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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