インターネット時代では、Web サービス アーキテクチャの設計と適用が非常に一般的なトピックになりました。現在、ほとんどのアプリケーションでは HTTP(S) プロトコルが主流になっているため、Web アプリケーション アーキテクチャでは http リバース プロキシと転送が重要になっています。この記事では主にgolangを使ってhttpフォワーディングを実装する方法を紹介します。
1. HTTP リバース プロキシと転送の概要
リバース プロキシと転送テクノロジは、Web アプリケーションにおいて非常に重要な役割を果たします。リバース プロキシの主な機能は、負荷分散の問題を解決し、リクエストを複数のサーバー間でより均等に分散させることです。対照的に、http 転送は、クライアントのリクエストを 1 つの Web サービスから別の Web サービスに転送します。 HTTP 転送を使用すると、アプリケーションの過負荷、スパム要求のフィルタリング、リダイレクトなど、さまざまな問題を解決できます。
2. golang を使用して http フォワーディングを実装する
Golang はリバース プロキシ機能を実装できるだけでなく、http フォワーディングも非常に便利に実装できます。以下では、golangを使用してhttp転送を実装する方法を詳しく紹介します。
1. 最初のステップは http サーバーを確立することです
まず、クライアントの要求をリッスンするための http サーバーを確立します。この例では、golang の組み込み http.Server ライブラリを使用して、単純なサーバーを構築します:
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Printf("Receive a request: %s %s%s", r.Method, r.Host, r.URL) w.Write([]byte("Hello, World!")) }) log.Println("Listening on :8080") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) } }
2. 2 番目のステップは、転送アドレスを設定することです
転送アドレスを次のように設定しますmake http リクエストは、対応するアドレスにリダイレクトできます。ここでは、 http.NewRequest() メソッドを使用して新しい http リクエストを生成し、 http.Transport() ライブラリを使用してリクエストを実行し、最後にリクエストに対する応答を取得できます。
package main import ( "fmt" "log" "net/http" "net/http/httputil" "net/url" ) func main() { addr, err := url.Parse("http://localhost:9090") if err != nil { log.Fatal(err) } proxy := httputil.NewSingleHostReverseProxy(addr) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Printf("Receive a request: %s %s%s", r.Method, r.Host, r.URL) proxy.ServeHTTP(w, r) }) log.Println("Listening on :8080") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) } }
この例では、http リクエストはローカル ポート 8080 からポート 9090 に送信され、addr オブジェクトが存在する転送アドレスに転送されます。単一ホストのリバース プロキシを通じて、サービスの数が変化しても柔軟なスケーリングのニーズを実現できます。
3. 概要
単純な http 転送サーバーは、golang の http ライブラリ、http.Transport() ライブラリ、および http.NewRequest() メソッドを通じて実装されます。 golang のような高性能言語は、このようなサービスの実装に非常に便利で、開発者に充実したサポートを提供し、今日のさまざまな Web アプリケーションのニーズを満たす http フォワーディングやリバース プロキシ技術を迅速かつ安定して実装できます。
以上がgolang を使用して http 転送を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。