notebook

都内でWEB系エンジニアやってます。

nginxを使ってみる

nginxを使ってみる

業務でも使うので個人的にもやっておかないとなということでとりあえず動かすところまでやってみる

centos5系を使ってるのでそれに合うrpmを持ってくる

rpm -ivh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm
yum install nginx
/etc/init.d/nginx start

とりあえずこれだけでサーバは起動することが出来ました。

簡単!!

で、これだけだとあれなので実際にサーバで動いてるものにリバースプロキシで接続できるようにしてみます。

とりあえず、今動いてるCatalystのサーバのポートへproxyを設定

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    access_log    /var/log/nginx/access.log;

    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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

    upstream backend_cluster {
        server 127.0.0.1:8080;
    }

    server {
        listen 80 default_server;

        proxy_set_header X-Forwarded-Port 80;

        location /static/ {
            root /var/www/tachyon/root;
        }

        location / {
            proxy_pass http://127.0.0.1:8080/;
            proxy_set_header X-Forwarded-Host $host;

            proxy_redirect http://$host:8080/  /;
            proxy_redirect https//$host:8080/ https://$host/;
        }
    }
}

設定は殆どデフォルト nginxを再起動させてcatalystも起動

perl script/app_server.pl -p 8080

80番ポートへアクセスすると無事catalystサーバで動いてるアプリにアクセスが行くようにできました。

なぜかproxy_pass http://backend_cluster/だとうまく接続できなかったので直で指定してしまった。。 これは今度詳しく見ないとなー

お次はstarmanを使ってやってみます。

script/app_create.pl PSGI

psgiファイルが出来るのでそれを使ってstart_serverを使ってサーバ起動します。

start_server --port 8080 -- starman --listen :8080 --workers 5 --interval=120 script/app.psgi &

こっちもうまく行った。

今までapacheで開発環境を動かしてたんだけど重いし設定面倒だしで大変だったけどnginxにしたら割とサクサクなのでよかった。 設定もそんなに難しくないようだし良いですね。

ローカルでやってみたのでこんな感じですが、実際に運用で使うならdaemontoolsとか使ったほうがいいのかな。。

とりあえずはこんなもんでしょうかね。。