WordPressをnginxで利用するための設定例
Ubuntu Server 11.10におけるWordPressをnginxで利用するための設定例をメモとして書いておきます。
WordPressはドキュメントルートの下のwpというディレクトリに配置しています。ただし、コンテンツのURLにはhttp://example.jp/topic/のように/wpを見せないようにしています。コメント等は一切許可していません。
スマートフォン向けの画面を生成するためにWPtouchを利用しています。このため、キャッシュ機能には工夫をしています。
/etc/nginx/nginx.conf
http { # 略 # キャッシュのパスの設定 fastcgi_cache_path /var/run/nginx/cache levels=1:2 keys_zone=STATIC:20m max_size=20m inactive=24h; # 略 }
/etc/nginx/conf.d/wordpress.conf
server { # 色々、略 # キャッシュの制御 set $nocache '0'; # WPtouchのために個別のキャッシュするためのキーのプレフィックス if ($http_user_agent ~* '(iPhone|iPod|incognito|webmate|Android|dream|CUPCAKE|blackberry9500|blackberry9530|blackberry9520|blackberry9550|blackberry 9800|webOS|s8000|bada|Googlebot-Mobile)') { set $wptouch_prefix 'wptouch-mobile.'; } if ($cookie_wptouch_switch_toggle = 'normal') { set $wptouch_prefix 'wptouch-normal.'; } # コンテンツのページ(キャッシュする) location / { if (-e $request_filename) { break; } rewrite ^.+$ /index.php last; } # 管理用のページ(キャッシュしない) location /wp/ { if (-e $request_filename) { break; } if (-d $request_filename) { break; } set $nocache '1'; rewrite ^.+$ /wp/index.php last; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { log_not_found off; access_log off; } # PHPのページをphp-fpmに渡す設定 location ~ \.php { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include /etc/nginx/fastcgi_params; # 動的ページのキャッシュの設定 fastcgi_cache STATIC; fastcgi_cache_key "$wptouch_prefix$host$request_uri"; fastcgi_cache_valid 200 10m; fastcgi_cache_valid 404 1m; fastcgi_cache_bypass $nocache; fastcgi_no_cache $nocache; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; } location ~ /\. { deny all; log_not_found off; access_log off; } }