以前書いたように、さくらインターネットの新しい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件のコメント