web-dev-qa-db-ja.com

モバイルバージョンがある外部サイトをキャッシュする

TumblrのNginxリバースプロキシ 」質問に対する回答の続きで、TumblrのようなWebサイトをnginxでキャッシュする最良の方法は何ですか?

一方で、考えられるすべてのユーザーエージェント文字列に対して個別のキャッシュコピーを保持したくはありません。

一方、リクエストのどの部分を使用してどのバージョンを提供するかを決定するために使用する情報はプロプライエタリであるため、私たちが何を扱っているかさえわからないようです。

明確なユーザーエージェントがキャッシュを汚染し妨害する可能性を最小限に抑えて、キャッシュを実行する最良の方法は何ですか

3
cnst

ドキュメントにさまざまなクライアント向けのバリエーションが多数ある場合、プロキシの効果は低くなります。この場合、バージョンが2つしかないため、問題が少し簡単になるようです。理想的なソリューションは、ユーザーエージェントに基づいてプロキシすることです。モバイルバージョンをモバイルクライアントに、デスクトップバージョンを他のクライアントに提供します。

たとえば、プロキシを実行するためにnginxの書き換えルールで使用できる正規表現があります。そのようなルールは利用可能です ここ

Nginxで実装する方法は次のとおりです。

if ($http_user_agent ~* "/Mobile|Android|BlackBerry/") {
    proxy_pass    http://m.example.com$request_uri;
}

proxy_pass    http://www.example.com$request_uri;
1