nginx設定golang

PHPz
リリース: 2023-05-19 09:04:37
オリジナル
759 人が閲覧しました

実際のアプリケーション シナリオでは、Nginx と Golang を組み合わせて使用​​すると、優れたパフォーマンスと高可用性を備えた Web サービスを提供できます。この記事では、Nginx 経由で Golang サービスをリバース プロキシする方法と、Golang での負荷分散に Nginx を使用する方法を紹介します。

1. Nginx リバース プロキシ Golang サービス

リバース プロキシは、パフォーマンスと信頼性を向上させることができる一般的なサーバー アーキテクチャです。これは、クライアントからリバース プロキシ サーバーにリクエストを送信することによって機能し、リバース プロキシ サーバーはそのリクエストをサーバー クラスター内の実際のサーバーに転送し、クライアントに応答を返します。 Nginx リバース プロキシは、パフォーマンスが高いだけでなく、数千の同時接続を簡単に処理できる優れたソリューションです。

実際のアプリケーションでは、リバース プロキシには主に 2 つの方法があります。1 つはドメイン名に基づく仮想ホストで、もう 1 つは URL パスに基づくものです。

1. ドメイン名ベースのリバース プロキシ

ドメイン名が example.com で、このドメイン名の下に 2 つのサブドメインがあり、1 つは blog.example.com で、もう 1 つは blog.example.com であるとします。 API .example.com。 2 つのサブドメインが異なるサーバーを指すようにしたいとします。次に、Nginx を次のように構成できます:

server {
    server_name blog.example.com;
    location / {
         proxy_pass http://your.blog.server;
    }
}

server {
    server_name api.example.com;
    location / {
         proxy_pass http://your.api.server;
    }
}
ログイン後にコピー

2. URL ベースのリバース プロキシ

/blog および /api へのリクエストを処理のために別のサーバーに引き渡したいとします。次に、Nginx を次のように構成できます:

location /blog/ {
    proxy_pass http://your.blog.server;
}

location /api/ {
    proxy_pass http://your.api.server;
}
ログイン後にコピー

このようにして、クライアントが example.com/blog/ のコンテンツをリクエストすると、Nginx はローカル コンテンツを返すのではなく、リクエストを your.blog.server に転送します。 。

2. Golang は負荷分散に Nginx を使用します

  1. Nginx 構成

Golang クライアントと Nginx を負荷分散に使用する前に、まずインストールする必要がありますNginx を選択して設定します。

Ubuntu に Nginx をインストールするコマンドは次のとおりです:

sudo apt-get update 
sudo apt-get install nginx
ログイン後にコピー

インストールが完了したら、次の内容を構成ファイルに追加します:

events {
    worker_connections  1024;
}

http {
    upstream your_go_server {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }

    server {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass http://your_go_server;
        }
    }
}
ログイン後にコピー

上流モジュールはこちら実行される負荷を定義します。 バランスサーバー。負荷分散用に複数のサーバーを構成できます。サーバー モジュールは、Nginx 負荷分散ポートを定義します。 location モジュールの / パスは、Nginx がすべてのリクエストを転送することを示します。

  1. Golang クライアント コード

負荷分散を実行するには、クライアント側で Golang HTTP クライアント ライブラリを使用し、サーバーを選択するための「検索」関数を記述する必要があります。負荷分散サーバーのリストにあります。

func findServer() string {
    servers := []string{"http://127.0.0.1:8080", "http://127.0.0.1:8081"}   //要进行负载均衡的服务器列表
    n := len(servers)
    rand.Seed(time.Now().UnixNano())  //定义随机种子
    index := rand.Intn(n)  //生成随机数
    return servers[index]   //返回随机选择的服务器
}
ログイン後にコピー

次に、HTTP リクエストを作成するときに、リソース URL の前に「findServer()」を追加するだけです。

client := &http.Client{}
req, err := http.NewRequest("GET", findServer()+"/example", nil)
response, err := client.Do(req)
ログイン後にコピー

このようにして、Golang クライアント コードは Nginx のコードを渡すことができます。負荷分散 システムは分散処理を適切に実行します。

概要

Nginx と Golang を組み合わせてリバース プロキシと負荷分散を実装すると、アプリケーションのパフォーマンスと高可用性を向上させることができます。リバース プロキシはクライアント リクエストを実際のサーバーに転送して処理することができ、ロード バランシングはリクエストの負荷を分散して、特定のサーバーへの過剰な負荷を回避します。この記事の紹介と例が、Nginx と Golang をより効果的に使用するのに役立つことを願っています。

以上がnginx設定golangの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!