Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

tomo_watanabe
組込み → Android → HTML5的な
http://tomowatanabe.hatenablog.com/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした