WebSocketをNginxでリバースプロキシさせる

Pocket
LINEで送る

WebSocketは、HTTPとはプロトコルが異なるため、nginxでリバースプロキシさせた場合に、xhr-pollingしか通さず、Websocketでエラーが発生してしまいます。

HTTP/1.1では、HTTP/1.1以外のプロトコルに切り替えるUpgradeヘッダがありますが、Nginxデフォルトの設定では、Upgradeヘッダが付与されていないため、Upgaradeヘッダに付与する必要があります。
※ Nginx1.1ぐらいまでは、UpgaradeヘッダがWebSocketのには対応していないようです。

server {
    listen       80;
    server_name  localhost;
    root         /usr/share/nginx/html;

    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;

    proxy_redirect    off;

    # for WebSocket
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    # その他の設定
        :
        :
}

 

おすすめ書籍

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください