nginxのメモ

静的コンテンツを返すにはもってこいらしい、nginxを触ってみた。

導入

PCREを要求されたので。

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.13.tar.gz
tar xzvf pcre-8.13.tar.gz
cd pcre-8.13
CFLAGS='-O2 -Wall' ./configure --prefix=/opt/local
make && make install


nginx
デフォルトでSSLを使わないようだったので、明示してみた。
(以降の例でSSLは出てこないけど。)

wget http://www.nginx.org/download/nginx-1.1.5.tar.gz
tar xzvf nginx-1.1.5.tar.gz
cd nginx-1.1.5
./configure --prefix=/usr/local/nginx --user=www --group=www \
--with-openssl=/usr/src/openssl-1.0.0d \
--with-http_ssl_module
make && make install 

設定

ほとんどwikiに載っている。
nginx wiki - Main
http://wiki.nginx.org/Main

起動ファイル

http://wiki.nginx.org/RedHatNginxInitScript
nginxとNGINX_CONF_FILEは適切なものに置き換える。
nginxにはバイナリまでの位置を指定する。
上記の例であれば"/usr/local/nginx/sbin/nginx"

virtual host

サーバ名(host名)で分ける場合。

http {

    .....

    server {
        server_name xxx.rying.net;
        root /var/www/html;
        .....
    }
    server{
        server_name yyy.rying.net;
        root /home/www/yyy;
        .....
    }
}
proxy

CGIなどの処理を委譲するときは、Apacheを裏で走らせて、そっちにリバースプロクシがお手軽。
ただし、リモートホスト情報がnginx自身のものがApacheへ渡るので、
リモートホストのIPを記録したいときなどは、別の方法を考える。
(やりかたはあるっぽいが、何かを入れないといけないっぽいので今回はパスした)

http {

    .....

    server {
        # *.cgi|*.pl|*.php で終わる場合は、プロクシへ処理を委譲する。
        location ~ \.(cgi|pl|php)$ {
            proxy_pass   http://xxx.rying.net:8080;
        }
        .....
    }
}
Location

locationによって、振る舞いを帰ることができる。(document_rootの変更とか)

http {

    .....

    server {
        # /xxx or /yyy のときは /home/hoge/htmlをdocument_rootにする
        location ~ ^/(?:xxx|yyy)/ {
            root /home/hoge/html;
        }
        .....
    }
}


ここまでやって飽きた