Domanda

Abbiamo un setup nuvola in questo modo:

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

supporta SSL in alcune pagine, e non su altri. Tutto oltre lo strato Perlbal elaborare solo le richieste oltre in chiaro HTTP dal scarta Perlbal l'SSL, ma lo fa aggiungere un'intestazione X-Forwarded-Proto in modo che l'applicazione sa se è stato utilizzato SSL o meno.

Se una richiesta colpisce l'applicazione (Apache) su HTTP, quando quella determinata pagina richiede SSL che reindirizza a HTTPS.

Quando una richiesta di una risorsa sicura raggiunge la nostra applicazione, e se l'applicazione invia Cache-Control: public, cache calamari che il contenuto in modo corretto. Il problema è che se l'utente tenta quindi di accedere alla versione HTTP di quella risorsa una volta che è memorizzato nella cache, i processi calamari come HIT cache e restituisce la risorsa memorizzata nella cache su HTTP, quando in realtà abbiamo bisogno di prendere in considerazione una cache di MISS perché X -Forwarded-Proto non corrisponde alla richiesta originale.

Come si fa? La nostra applicazione invia:

Vary: X-Forwarded-Proto,Accept-Encoding

Sto avendo difficoltà a trovare tutti gli articoli / documentazione su questo e questo Vary intestazione sembra essere quello che gli altri suggeriscono, ma non funziona. Squid serve il contenuto memorizzato nella cache indipendentemente dalla X-Forwarded-Proto intestazione che indica SSL o in altro modo.

È stato utile?

Soluzione

OMFG.

Abbiamo avuto questo nella nostra .htaccess per ragioni storiche:

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

Tre indovina cosa succede alla cache squid una volta un IE 6 visite degli utenti del nostro sito. Vary intestazione rimosso. Caching strategia di rotto.

Vite IE. La rimozione di questo è stata una buona mossa. Tutto ora di lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top