このブログのサーバーをnginx+Apacheの環境に引っ越ししました。

以前書いたように、さくらインターネットの新しいVPSにデータを移しています。
どうせなら「Wordpressをnginxで動かそう」と色々いじってました。

が、Wordpressのパーマリンクをアホな形にしていたせいでどうもうまく設定できない。
一旦、静的ファイルはnginx、動的部分は旧来からのApacheで動かすことにしました。

いい機会なのでパーマリンクの形も修正しました。
旧来は
/archives/yyyymmddhhiipost_id.php
でしたが、今回から
/archives/post_id
という形に変更しました。
この「.php」が入ってるせいでnginxだけだとうまくいかない。rewrite設定もうちょっと見直してみよう・・・。

パーマリンクが変わったので、これまで頂いたFacebookの「いいね!」やツイート数が吹っ飛んだけど、これはしょうがない。

旧来の形でアクセスした場合、新パーマリンクへリダイレクトするのでリンク切れは無いはず・・・です。(リンク切れがあったら教えて下さい。)

旧パーマリンクからのリダイレクト処理はWordPressのプラグイン、Permalink Redirect WordPress Plugin | Scott Yang’s Playgroundを使用しています。このプラグイン、制作者のページから直接落としてインストールしたほうがいいです。WordPressの管理画面から検索して入れたバージョンは上手く動かなかった…。

今回インストールしたnginxは1.2.0。
ソースからインストールしました。

設定したnginxの設定ファイルはこんな感じ。
静的ファイルだけnginxにまかせてます。

2012/5/17 追記 —–
nginx.confの変なところにexpireが入っていたので削除
—– 追記ここまで

[shell title="nginx.conf language=(全体設定)"]
user  nginx;
worker_processes  2;

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

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  5;

    gzip  on;
    gzip_http_version   1.0;
    gzip_min_length     1000;
    gzip_comp_level     2;
    gzip_proxied        expired no-cache no-store private auth;
    gzip_vary           on;
    gzip_types          text/plain
                        text/xml
                        text/css
                        text/javascript
                        image/x-icon
                        application/xml
                        application/rss+xml
                        application/json
                        application/x-javascript;
    gzip_disable "MSIE [1-6]\.";
    gzip_disable        "Mozilla/4";

    server_tokens     off;

    proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=czone:4m max_size=50m inactive=120m;
    proxy_temp_path   /var/tmp/nginx;
    proxy_cache_key   "$scheme://$host$request_uri";
    proxy_set_header  Host               $host;
    proxy_set_header  X-Real-IP          $remote_addr;
    proxy_set_header  X-Forwarded-Host   $host;
    proxy_set_header  X-Forwarded-Server $host;
    proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;

    upstream backend {
        ip_hash;
        server 127.0.0.1:8080;
    }

    upstream through {
        ip_hash;
        server 127.0.0.1:5000;
    }

    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;
}
[/shell]

各サイト設定は/etc/nginx/conf.d/以下に設置。

[shell title="zafiel.conf(各サイトの設定)"]
server {
    listen       80;
    server_name  zafiel.wingall.com;

    location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
        root    /var/www/zafiel;
        index   index.html;
        log_not_found off;
        expires 24h;
        break;
    }

    location / {
        proxy_pass http://through
        break;
    }
}
[/shell]

Apacheにはリバースプロキシ用のモジュール(mod_rpaf)を組み込んでいます。

[shell]
$ sudo yum install httpd-devel
$ wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
$ tar xzvf mod_rpaf-0.6.tar.gz
$ cd mod_rpaf-0.6

$ vi Makefile

# APXSのパスを下記に書き換える
APXS2=/usr/sbin/apxs

# インストール。
$ make rpaf-2.0
$ make install-2.0
[/shell]

これで組み込み完了。あとはApacheの受け入れポートを間違えなければ、通常と同じ設定でOK.

WordPressがnginxだけで動かないのは悔しいなぁ。
nginxのconfigもよく分かってない部分多いし、一旦全部新VPSに移してじっくり色々調べよう。

今回、参考にさせて頂いたサイトは下記です。

1件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください