3

私はNGINXおよびWebSocketシステムの初心者ですが、プロジェクトの要件に従って、完了するためにいくつかの複雑なことを確認する必要があります。

同じ URL (ロードバランサーの URL) を使用して WebSocket (ポート: 1234) と HTTP リクエスト (ポート: 80) を処理する NGINX を使用して 1 つの例を作成しようとしています。

3 つの NGINX サーバーを使用しています。1 つはロード バランサー (10.0.0.163) として、もう 2 つは実際の API である 10.0.0.152 と 10.0.0.154 をそれぞれインストールしたアプリケーション サーバーとして使用しています。現在、アプリケーション サーバーで WebSocket を構成しています。

上記の構成に従って、すべてのリクエストは 10.0.0.163 (ロード バランサー) を通過し、プロキシ設定はリクエスト (HTTP/WebSocket) をアプリケーション サーバー (10.0.0.152/154) に渡します。

注 : 各アプリケーション サーバーには個別の Nginx、php、websocket が含まれています。

同じドメインで WebSocket と HTTP リクエストを処理する 10.0.0.154 サーバーのデフォルト (場所: /etc/nginx/sites-available/) ファイルを次に示します。

server{
    listen 80;
        charset UTF-8;
        root /var/www;
        index index.html index.htm index.php
        server_name localhost 10.0.0.154 ;
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }
    location / {
            try_files $uri $uri/ @proxy;    autoindex on;
    }
    location @proxy{
        proxy_pass http://wb1;
    }
    location =/ {
                proxy_pass http://wb;       
                proxy_http_version 1.1;
                proxy_buffers 8 16k;
                proxy_buffer_size 32k;
                proxy_set_header Upgrade $http_upgrade; 
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        Referer                 $http_referer;
        proxy_redirect off;

        }

}

以下は、10.0.0.163 のロード バランサーのデフォルト ファイル (場所: /etc/nginx/sites-available/) です。

upstream wb{
    server 10.0.0.154;
    server 10.0.0.152;
}

server{
    listen 80;
        charset UTF-8;
        root /var/www;
        index index.html index.htm index.php
        server_name 10.0.0.163 ;

    location / {
            try_files $uri $uri/ @proxy;    autoindex on;
    }
    location @proxy{
        proxy_pass http://wb;
    }
    location =/ {
                proxy_pass http://wb;       
                proxy_http_version 1.1;
                proxy_buffers 8 16k;
                proxy_buffer_size 32k;
                proxy_set_header Upgrade $http_upgrade; 
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        Referer                 $http_referer;
        proxy_redirect off;

        }

}

ロード バランサは HTTP リクエストに対して適切に動作していることがわかりましたが、WebSocket リクエストをアプリケーション サーバーに進めることができません。

ここで何が欠けているのかわかりません。

4

1 に答える 1