Hatena::ブログ(Diary)

2011-08-21

socket.io を動かすために、nginx_tcp_proxy_moduleを追加してnginxをビルドし直す。あとそれをubuntuのデーモンスクリプトで起動する設定

nginxをプロキシに使ってnode.jsを動かしている。
socket.io がつながらなくて困っていた。

nginx_tcp_proxy_module というのを作ってくれた素敵な人がいて、
それを使うといける。かっこよすぎ。

ubuntuapt-getから入るnginxは、0.7.65となっているけど、
最新安定板は1.0越えてるーとおもった。

nginx -V をすると、apt-getでコンパイルしたときのconfigureオプションが見れるので、自分でビルドし直すときに参考にできる。

/usr/sbin/nginx -V
nginx version: nginx/0.7.65
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module --with-http_gzip_static_module --with-http_realip_module --with-mail --with-mail_ssl_module --with-ipv6 --add-module=/build/buildd/nginx-0.7.65/modules/nginx-upstream-fair

nginxのソースを落として、nginx_tcp_proxy_moduleのパッチを当ててビルドする。

wget http://nginx.org/download/nginx-1.0.5.tar.gz
git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git
tar zxvf nginx-1.0.5.tar.gz
cd nginx-1.0.5
patch -p1 < ../nginx_tcp_proxy_module/tcp.patch

./configure \
--prefix=/usr/local \
--sbin-path=/usr/local/sbin/nginx \
--conf-path=/usr/local/etc/nginx/nginx.conf \
--add-module=../nginx_tcp_proxy_module/

make

sudo make install

拡張モジュールなにも入れなかった。デフォルトでもgzipは使えるみたい?
実行userとか、pidのパスとかログのパスとかは、configureで指定しなくても設定ファイルで指定できるっぽい。

nginx.conf
/etc/nginx のやつを見ながら書き換え

user  www-data;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

error_log  /var/log/nginx/error.log;
pid  /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include conf.d/*.conf;
    include sites-enabled/*;
}

/etc/nginx の設定を持ってくる。

cp -r /etc/nginx/conf.d /usr/local/etc/nginx/
cp -r /etc/nginx/sites-availables /usr/local/etc/nginx/
cp -r /etc/nginx/sites-enabled /usr/local/etc/nginx/

/etc/init.d/nginx を使って、start/restart してほしかった。
ソースを見たら、/etc/default/nginx で拡張できるようになっていた。

/etc/default/nginx を新しく作る

DAEMON=/usr/local/sbin/nginx
DAEMON_OPTS='-c /usr/local/etc/nginx/nginx.conf'

/etc/init.d/nginx start で、自分でビルドした方のnginxが起動した。えへへ