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