LoginSignup
97
86

More than 5 years have passed since last update.

nginx(1.3.13)でWebSocketのプロキシを試した

Last updated at Posted at 2013-02-23

2013/2/19にnginxが正式にWebSocketに対応したとアナウンスがあったので、試しに使ってみました。

ダウンロード・インストール

ここからnginx-1.3.13をダウンロードしてきて、インストールします。
インストールオプションはあえてデフォルトで

$ wget http://nginx.org/download/nginx-1.3.13.tar.gz
$ tar xvf nginx-1.3.13.tar.gz
$ cd nginx-1.3.13
$ ./configure
$ make
$ sudo make install

設定ファイルの書き換え

次にnginx.confを書き換えます。構成は

  • リバースプロキシ: 192.168.0.8:80
  • バックエンドサーバ: 192.168.0.2:3000

3000ポートの方はNode.jsのサーバを動作させておき、192.168.0.8:80に来たアクセスが、そのまま動けばOKです。別々のサーバにしていますが、リバースプロキシ上で3000ポートで動かしても良かったですね…(^^;

/usr/local/nginx/conf/nginx.conf

を普通に設定してみます。

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://192.168.0.2:3000/;
        }

Node.jsのサーバで動かしておくアプリはこれです。これは接続がどうなってるかわかるので。

では起動させてみます。

$ sudo /usr/local/nginx/sbin/nginx

ブラウザ画面

残念…xhr-pollingでしか繋がらないようです。Unexpected response code: 502 と出ています。

あれれ、と思って@nginxorgを眺めてたら、このツイートを発見

設定ファイルを再度書きかえ

チェンジセットにあるように、丸パクリで書き換えてみました。

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://192.168.0.2:3000/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

さて、これで再度起動して確認します。
ブラウザ画面

おぉ!ちゃんとWebSocketで接続できるようになりました\(^o^)/

97
86
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
97
86