【nginx】スマホからのアクセスはキャッシュを別にしたい


お世話になります。
nginx + PHP-FPM + CentOS + Wordpress + レスポンシブデザインでWebサイトを構築しています。

キャッシュ機能を利用したく、以下のサイトを参考に設定を行いました。
http://server-setting.info/centos/nginx-fastcgi-cache.html
http://server-setting.info/centos/nginx-cache-mobile.html

結果、PC用の表示はキャッシュできたのですが、スマホからアクセスした際もPC用の表示となってしまいます(基本レスポンシブなのですが、細かな部分でPC/スマホを分けているため、同じ表示では不都合がございます)。

実際には、最初のURL中のコード、93~121行目(切り分けをすると、114~116行目っぽい)を入れると、スマホからのアクセスが404になってしまい、外すとスマホからもPC用が表示される状態です。

1:スマホからのアクセスはキャッシュを別にしたい
2:難しければ、スマホからのアクセスはキャッシュを表示させないようにしたい

をしたいのですが、何か有用な方法はありますでしょうか。

※WP Super Cacheを利用し、Mobile Device Supportをオフにしても同じでした。


何卒よろしくお願い致します。

回答の条件
  • 1人50回まで
  • 登録:2015/06/23 01:08:05
  • 終了:2015/06/30 01:10:03
id:cafe-beret

すみません。補足ですが、キャッシュはリバースプロキシではなく、fastcgiを利用しています。
よろしくお願い致します。

ベストアンサー

id:pyopyopyo No.1

pyopyopyo回答回数357ベストアンサー獲得回数882015/06/23 21:30:20

ポイント500pt

1) fastcgi なら、設定は簡単なはずです

設定ファイルで、タイプミスなどをしていませんか?

一度、デフォルトの設定ファイルに戻して、必要最低限の設定だけを行ってみると、見落としに気がつくかもしれません。

2) 古いキャッシュが残っていませんか?

一度、キャッシュを全部消しましょう。

手順は別エントリにかいてあるようです
http://server-setting.info/centos/nginx-cache-remove2.html

3) 実際に正しくキャッシュファイルが生成されているか確認しましょう

http://server-setting.info/centos/nginx-cache-mobile.html
の後半に、キャッシュが保存されるディレクトリ名を調べる方法が書いてあります

この手順でディレクトリ名を調べて、実際にキャッシュファイルが期待通りのディレクトリに正しく生成されているか確認した方が良いとおもいます

その他の回答(1件)

id:pyopyopyo No.1

pyopyopyo回答回数357ベストアンサー獲得回数882015/06/23 21:30:20ここでベストアンサー

ポイント500pt

1) fastcgi なら、設定は簡単なはずです

設定ファイルで、タイプミスなどをしていませんか?

一度、デフォルトの設定ファイルに戻して、必要最低限の設定だけを行ってみると、見落としに気がつくかもしれません。

2) 古いキャッシュが残っていませんか?

一度、キャッシュを全部消しましょう。

手順は別エントリにかいてあるようです
http://server-setting.info/centos/nginx-cache-remove2.html

3) 実際に正しくキャッシュファイルが生成されているか確認しましょう

http://server-setting.info/centos/nginx-cache-mobile.html
の後半に、キャッシュが保存されるディレクトリ名を調べる方法が書いてあります

この手順でディレクトリ名を調べて、実際にキャッシュファイルが期待通りのディレクトリに正しく生成されているか確認した方が良いとおもいます

id:alfa-gadget No.2

alfa-gadget回答回数254ベストアンサー獲得回数502015/06/26 00:39:48

ポイント500pt

どのように実際の定義をされているのかがわかりませんが、
http://server-setting.info/centos/nginx-fastcgi-cache.html
こちらをベースにすると

set $mobilef '';

77行目の次あたりに入れる

if (...) {
     set $mobilef 'mobile.';
}

93行目以降の -- mobile ? とか -- Kei-tai ? と書かれている適切な位置に set $do_not_cache 1; の代わりに入れる。

fastcgi_cache_key "$mobilef$scheme://$host$request_uri";

129行目を置き換える。

というような感じになるはずです。
定義を確認してみてください。

id:cafe-beret

alfa-gadget様

ご回答頂きありがとうございます。

ご指摘頂いた、

set $mobilef 'mobile.';

fastcgi_cache_key "$mobilef$scheme://$host$request_uri";

につきましては、質問内に掲載した2つ目のURL(http://server-setting.info/centos/nginx-cache-mobile.html)内に記載があり、すでにそのように設定をしております。


ご回答につき、私が読み違えていたら誠に申し訳ございません。

2015/06/26 14:33:19
id:alfa-gadget

伝わらないでしょうか。
ふたつのURLでそれぞれ書かれていることを、どのように組み合わせて定義しているのでしょうか。
順番に並べただけではだめです。

2015/06/28 11:55:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません