WordPressでNginxのキャッシュを消すプラグインが動かない人向け
WordPressをリバースプロキシ下で運用している方は多いと思いますが
記事を投稿したりコメントを頂いた際、自動で該当のキャッシュを消してくれる便利なプラグインは手放せません。
WordPressのアクションフックを調べて自分で書けば良いと言えば良いのですが、あるものを使った方がだいぶ楽ちんですから。
と言うわけで私もWordPressをリバースプロキシ下に移してキャッシュさせてみた訳ですが、、、
動かないンゴ( ^ω^)・・・
そんなわけでちょっと見てみると、キャッシュファイルの類はnginxのワーカープロセスのユーザーで作成される様子。
user nginx;
こう書いてあると
# ls -la /var/cache/nginx
合計 20
drwx------ 18 nginx root 134 7月 15 22:47 .
drwxr-xr-x. 9 root root 97 7月 15 21:24 ..
drwx------ 21 nginx nginx 4096 7月 19 17:35 0
drwx------ 21 nginx nginx 4096 7月 19 17:28 1
drwx------ 10 nginx nginx 78 7月 17 08:47 2
drwx------ 21 nginx nginx 4096 7月 19 17:35 3
drwx------ 14 nginx nginx 114 7月 19 17:35 4
drwx------ 18 nginx nginx 150 7月 19 17:35 5
drwx------ 21 nginx nginx 4096 7月 19 15:03 6
drwx------ 19 nginx nginx 4096 7月 19 15:23 7
drwx------ 14 nginx nginx 114 7月 19 17:35 8
drwx------ 12 nginx nginx 96 7月 19 17:28 9
drwx------ 16 nginx nginx 132 7月 19 17:35 a
drwx------ 13 nginx nginx 105 7月 18 21:30 b
drwx------ 13 nginx nginx 105 7月 19 17:35 c
drwx------ 15 nginx nginx 123 7月 19 17:35 d
drwx------ 17 nginx nginx 141 7月 19 17:35 e
drwx------ 18 nginx nginx 150 7月 19 17:35 f
こうなってしまう。ズラっとnginx。
ユーザーディレクトリにDocumentRootなんかがあって、PHP-FPM等で実行ユーザーを設定してやってると、このワーカープロセスが作ったnginxキャッシュが操作出来ない。
かといってnginxはワーカープロセスやらキャッシュマネージャープロセスに対し、個別のサーバー(ヴァーチャルホストなど)毎に実行ユーザーを設定出来ないので、、、
前述の「user nginx;」としちゃってるユーザーでキャッシュが作られてしまう。
しかもパーミッションが700。
オーナーでないと見る事も消す事も出来ませぬ。
ユーザーディレクトリにあるDocumentRootはそのユーザーの権限で完結させたい所だけれど、、
せめてグループで操作出来る様にならないかと色々と調べて見ても良い方法が見つからず。
仕方なくユーザーディレクトリにあるDocumentRoot以下のアクセス権限を、PHP-FPMのユーザー含め、すべてワーカープロセスのユーザーで行える様に揃えてしまうと、前述のキャッシュ削除プラグインがちゃんと動いてくれた。
要するにキモは
nginxのキャッシュ系ファイルはワーカープロセスで設定したユーザーで作られ、しかもパーミッションが700で固定という業突く張りだったという事でした。
WordPressのキャッシュ自動削除系プラグインが動かない人は、この辺りもチェックしてみてください。
さて、WordPress用のグループパーミッションの設定とか面倒過ぎてやりたくないのでこんな大雑把な感じに。
するともうDocumentRootがユーザーディレクトリにある意味すら失われ( ^ω^)・・・
まぁなんか、nginxでヴァーチャルホストいっぱい作ってPHP-FPMしてリバースプロキシ置いて、みたいな事をやる人はもう全部rootでもいいっちゃいいのですけど。
誰か複数人でメンテする場合やらは、ステージング環境でも作ってデプロイの仕組みでも置いてやれって事ですか。
若しくはキャッシュ削除系プラグインをフックしてsudoersでやるか。
後々の管理を考えると、どれも非常にめんどくさいですね。
nginxのキャッシュファイル生成時のパーミッションが変えられたら一番楽ちんなんですけれど
誰かご存知ないですかね
ディスカッション
コメント一覧
まだ、コメントがありません