経験知ロゴ

WordPressでnginxのプロキシキャッシュが効かない問題が解決

nginx
新しいブログを立ち上げるために新しいサーバの設定をしています。

その際にnginxのプロキシキャッシュが効かなく(キャッシュファイルが作成されない)悩んでいました。

いろいろ試してみると、ブラウザによってキャッシュが効いたり効かなかったりすることが判明。

更に調べてみるとなんとか解決できたので紹介します。

キャッシュが効かない理由

nginxではresponse headerに「Cache-Control:no-cache」の様な特定の条件の値がある場合はキャッシュを使わず普通に処理してしまう。(HttpProxyModule – Nginx Community)

WordPressファイルの中にある「admin-ajax.php」が「nocache_headers()」を呼び出して「response header」に「Cache-Control:no-cache」を追加していたことが原因のようだ。

特定のブラウザでキャッシュが効かないのは、WordPressにログインした状態でブログにアクセスすると「admin-ajax.php」が呼び出されてキャッシュが効かない状態になっていたからだった。

なのでブラウザに原因があるのではなく、WordPressにログインしているかしていないかの問題だった。

「HttpProxyModule – Nginx Community」によると、プロキシキャッシュの設定に

proxy_ignore_headers X-Accel-Redirect X-Accel-Expires Cache-Control Expires Set-Cookie;

を追加すれば値に関係なくキャッシュしてくれるようだが僕の環境ではうまくいかなかった。

正社員でフリーランスな仕事を実現

フリーのエンジニアになって仕事を自由に選びたい!正社員並みの保証が欲しい!

という相反する要望をかなえてくれるのが【midworks】です。

雇われるだけの生活から脱出してみませんか?



おわりに

エラーが出ていたわけではないので原因の見当がつかず、かなりの時間を使ってしまいました。

ブラウザの設定でキャッシュが効かなくなるのは困ると思い、必死で探しましたが、WordPressにログインできる自分だけの問題だったのでひとまずホッとしました。

ここまで突き詰めるのに満身創痍のためこれ以上の原因は追求しませんが、お分かりの方がいらしたら教えていただけると有難いです。

▼役に立ったらシェアをお願いします