wordpressをnginxでリバースプロキシーしたときの404がキャッシュされなかったり、phpにアクセスされないようにしたり。

wordpressをnginxでリバースプロキシーしたときの404がキャッシュされなかったり、phpにアクセスされないようにしたり。

結局、404を上手くキャッシュ出来ずに。数時間。目が痛い。。。

server { # simple reverse-proxy

 proxy_ignore_headers Cache-Control Expires;

 if ( $uri ~ php$ ){
   set $my404 1;
 }
 if ( $uri ~ ^/wp-admin ){
   set $my404 1;
 }
 if ( $my404 = 1 ) {
   rewrite      / /error/404.html last;
 }
 location / {
   proxy_pass      http://mybackend;
   proxy_cache myzone;
   proxy_cache_valid  404 200 302 1d;
   proxy_cache_valid  any      1m;
 }
}

php や wp-adminにアクセスしたら error/404.htmlという適当な名前に飛ばします。
(同じドメインで管理をされている場合は、この方法は利用出来ません。
みなさんcookieを見て振り分けているようです。)

404などには、キャッシュコントロールヘッダーが付いているそうで

proxy_ignore_headersを設定しないと行けないようです。
(これも同ドメインで管理されている場合は、cookieなどで振り分けた方が良いようです。

みなさんが簡単に解決出来ることをお祈りしています。

This entry was posted on 火曜日, 12月 11th, 2012 at 1:50 AM and is filed under blog, nginx. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。