Raspberry Pi に nginx をインストールしたときのメモ
用意したもの
- Raspberry Pi model B
今買うなら Raspberry Pi2 model Bがいいですかね

Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログを見る
自分は初代model Bしか持っていませんが、シングルコアのmodel Bだとそれなりに時間がかかります。
経緯
- nginxをWebSocketのリバースプロキシとして使いたい
- Raspberry Pi(Raspbian)でnginxを使いたい
- 普通にapt-getでインストールしたらv1.2.1だった(WebSocketのリバースプロキシに非対応)
やること
作業
apt-getで入れたnginxを削除する
$ sudo apt-get remove nginxnginx公式リポジトリの鍵を登録する
$ wget -O - http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
始めはバイナリが入ると思ったからやったけどどうせビルドするならいらないかもnginx公式のリポジトリを登録する
$ sudo sh -c 'echo "deb http://nginx.org/packages/debian/ wheezy nginx" >> /etc/apt/sources.list'
$ sudo sh -c 'sudo echo "deb-src http://nginx.org/packages/debian/ wheezy nginx" >> /etc/apt/sources.list'インストール
arm用のパッケージが配布されていないので、ソースからビルドしてパッケージをつくっちゃう
$ sudo apt-get update $ sudo apt-get build-dep nginx $ sudo apt-get source nginx $ cd nginx-1.6.2 # バージョンに応じて $ sudo dpkg-buildpackage -uc -b $ sudo dpkg -i nginx_1.6.2-1~wheezy_armhf.deb
参考
nginxをWebSocketのリバースプロキシとして使う
経緯
- WebSocketを使ったアプリケーションを作ったが、ポートが80しか使えない
- nginxでどっちも80に流したい
ポイント / はまり所
- WebSocketのプロキシにはUpgradeヘッダ(HTTP 1.1)への対応が必要
- Upgradeヘッダへの対応は nginx v1.3.13以降
参考: WebSocket proxying - 厳しい条件から先に書く
- デフォルトだと30秒通信がないと切断される(!)
nginxでリバースプロキシしているときだけ一定時間で接続が切れるので何かと思えば、
普通のHTTPの通信と同様に30秒(だったはず)通信がなかった場合はタイムアウトってことで自動でコネクションを切ってくれていたみたい。
ping/pongを30s以内にやればいいんだろうけど、とりあえず5分に設定。
config
server {
listen *:80 default_server;
proxy_read_timeout 5m;
location /ws {
proxy_pass http://127.0.0.1:3000/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://127.0.0.1:3000;
}
}