httpヘッダーがキャッシュコンテンツのヘッダーと一致するようにするsquid config
-
29-09-2019 - |
質問
このようなクラウドセットアップがあります:
User Request -> Perlbal (SSL unwrapping) -> Squid (Caching) -> Apache -> HTTP Response
SSLは一部のページではサポートしていませんが、他のページではサポートしていません。 Perlbal Layerを超えたすべてのPerlbal Layのみが、PerlbalがSSLを解除するため、暗号化されていないHTTPよりもプロセス要求しますが、追加します。 X-Forwarded-Proto
アプリケーションがSSLが使用されているかどうかを認識できるようにヘッダー。
リクエストがHTTPを介してアプリケーション(Apache)にヒットした場合、その特定のページがSSLを必要とする場合、httpsにリダイレクトします。
安全なリソースのリクエストがアプリケーションに到達したとき、およびアプリケーションが送信した場合 Cache-Control: public
, 、イカはそのコンテンツを正しくキャッシュします。問題は、ユーザーがキャッシュされたらそのリソースのHTTPバージョンにアクセスしようとする場合、イカはキャッシュヒットとして処理し、httpを介してキャッシュされたリソースを返すことです。 -Forwarded-Protoは元のリクエストと一致しません。
これはどのように行われますか?私たちのアプリケーションは送信します:
Vary: X-Forwarded-Proto,Accept-Encoding
これに関する記事やドキュメントを見つけるのは苦手です。 Squidは、SSLまたはその他を示すXに向いたプロットヘッダーに関係なく、キャッシュされたコンテンツを提供します。
解決
OMFG。
私たちは歴史的な理由で私たちの.htaccessでこれを持っていました:
BrowserMatch "MSIE" brokenvary=1
BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
BrowserMatch "Opera" !brokenvary
SetEnvIf brokenvary 1 force-no-vary
IE 6ユーザーが当社のサイトにアクセスすると、イカキャッシュに何が起こるかを3つ推測します。異なるヘッダー削除。キャッシュ戦略が壊れています。
ネジIE。これを削除することは良い動きでした。すべてが機能しています。