静的コンテンツを返すにはもってこいらしい、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; } ..... } }
ここまでやって飽きた