Squid Konfiguration, um sicherzustellen, HTTP-Header übereinstimmt, der im Cache gespeicherten Inhalte

StackOverflow https://stackoverflow.com/questions/4103153

Frage

Wir haben eine Cloud-Setup wie folgt aus:

User Request -> Perlbal (SSL unwrapping) -> Squid (Caching) -> Apache -> HTTP Response

Wir unterstützen SSL auf einigen Seiten und nicht auf andere. Alles über die Perlbal Schicht nur verarbeitet Anfragen über unverschlüsselte HTTP seit Perlbal auspackt die SSL, aber es funktioniert fügen Sie einen X-Forwarded-Proto Header, so dass die Anwendung weiß, ob SSL verwendet wurde oder nicht.

Wenn eine Anforderung trifft auf die Anwendung (Apache) über HTTP, wenn diese bestimmte Seite erfordert SSL es zu HTTPS umleitet.

Wenn eine Anforderung für eine sichere Ressource erreicht unsere Anwendung, und wenn die Anwendung sendet Cache-Control: public, Tintenfisch-Caches, die Inhalt richtig. Das Problem ist, dass, wenn der Benutzer versucht dann, die HTTP-Version dieser Ressource zuzugreifen, sobald es zwischengespeichert, Tintenfisch Prozesse es als Cache-HIT und gibt die zwischengespeicherten Ressource über HTTP, wenn in der Tat wir sie brauchen es eine Cache-Miss, weil X zu prüfen, -Forwarded-Proto nicht die ursprüngliche Anforderung entsprechen.

Wie wird das gemacht? Unsere Anwendung sendet:

Vary: X-Forwarded-Proto,Accept-Encoding

Ich habe eine harte Zeit auf dieser keine Artikel / Dokumentation zu finden und diese Vary Header scheint zu sein, was andere Leute vorschlagen, aber es funktioniert nicht. Squid dient die im Cache gespeicherten Inhalte unabhängig von dem X-Forwarded-Proto-Header angibt, SSL oder nicht.

War es hilfreich?

Lösung

OMFG.

Wir haben dies in unserer .htaccess aus historischen Gründen:

BrowserMatch "MSIE" brokenvary=1
BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
BrowserMatch "Opera" !brokenvary
SetEnvIf brokenvary 1 force-no-vary

Drei Vermutungen, was einmal ein IE 6 Nutzer besucht unsere Website auf den Tintenfisch Cache passiert. Vary Header entfernt. Caching-Strategie gebrochen.

Schraube IE. Entfernen dies war ein guter Schritt. Alles funktioniert jetzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top