Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
89
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

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^)/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
89
Help us understand the problem. What are the problem?