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などで振り分けた方が良いようです。
みなさんが簡単に解決出来ることをお祈りしています。