nginx環境で、CakePHPの中にWordPressをインストールする為のconf設定
試行錯誤時間:半日程度 CakePHPで作ったアプリの内部に、一部だけ更新情報を発信する為にWordPressを導入したいというニーズはあると思うんですよ。しかしですね、 nginx環境で、CakePHP内にWordPressってなると情報ソースが少ないのです。
今回は特に、UKLabさんのこの記事をベースにnginxを組み立てた人向けの設定方法です。
さくらのVPSでWordPressを動かそう – 初期設定・セキュリティ設定編 - - UKLab開発者ブログ
環境
- CakePHP:http://cake.php/
- WordPress: http://cake.php/blog/
こんな感じにしたい時のconfファイルの設定方法です。 編集するのはこちらのページに出てくるファイル。 nginxの設定ファイルを書きなおした - UKLab開発者ブログ
default-proxy.conf 内の設定です。リバースプロキシ部分っていう奴。
変更点1 ブログ設定を書き足す
[code]
location ~* ^/wp-(content|admin|includes) {
index index.php index.html index.htm;
if ($request_filename ~ .*\.php) {
break;
proxy_pass http://backend;
}
# expiresヘッダー用の設定を読み込みます。
include /etc/nginx/conf.d/common/expires.conf;
}
[/code]
この部分を変更します。mobile-cache.confを読み込んだ次の行からが変更点
[code]
# Blog config
location /blog {
index index.php;
try_files $uri $uri/ /blog/index.php?$args;
location ~* ^/wp-(content|admin|includes) {
index index.php index.html index.htm;
if ($request_filename ~ .*\.php) {
break;
proxy_pass http://backend;
}
# expiresヘッダー用の設定を読み込みます。
include /etc/nginx/conf.d/common/expires.conf;
}
}
[/code]
こんな感じで、WordPress用のロケーションの設定(/blog)を追加し、管理画面系の設定を括ってしまいます。
最後に、 location / の try_filesを追加して完成。
[code]
location / {
# for cakephp
try_files $uri $uri/ /index.php?url=$uri$args;
# PHPファイルへのアクセスの場合バックエンドに処理が投げられる。
if ($request_filename ~ .*\.php) {
break;
proxy_pass http://backend;
}
# expiresヘッダー用の設定を読み込みます。
include /etc/nginx/conf.d/common/expires.conf;
# デフォルトではキャッシュするように変数に0をセットする。
set $do_not_cache 1;
# WordPressにログインしている場合はキャッシュしないように変数に1をセットする。
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}
# POSTアクセスの場合もキャッシュしないように変数に1をセットする。
if ($request_method = POST) {
set $do_not_cache 1;
[/code]
以下同じ、という感じです。これだけ。