...
proxy_cache_key $scheme://$host$request_uri;
Par défaut un Pour faire fonctionner le force-reload ne fonctionne pas avec nginx (?). Solution :
proxy_cache_bypass $http_pragma;
Pour forcer une mise en cache d'un contenu, il faut comprendre ce qu'effectue nginx :
- interrogation du cache avec "proxy_cache_key", en vérifiant les contraintes sur les request headers (voir plus loin)
- si cache trouvé et si évaluation de "proxy_no_cache" répond faux
- utilisation du cache
- sinon
- requesting upstream après effectué "proxy_set_header"
- si réponse n'a pas "Set-Cookie" ou si ignoré par "proxy_ignore_headers"
et si réponse a X-Accel-Expires/Cache-Control/Expires et non ignoré par "proxy_ignore_headers"
ou si "proxy_cache_valid" l'autorise- si response headers contient "Vary" et non ignoré par "proxy_ignore_headers"
- si "Vary: *" ou Vary trop long (plus de 128 chars)
- pas de mise en cache
- sinon mise en cache avec contrainte sur les request headers listé dans "Vary"
- si "Vary: *" ou Vary trop long (plus de 128 chars)
- sinon mise en cache sans contrainte
- si response headers contient "Vary" et non ignoré par "proxy_ignore_headers"
- sinon pas de mise en cache
- dans tous les cas, effectuer "proxy_hide_header" et "add_header"
PS : la durée de mise en cache est définie par X-Accel-Expires/Cache-Control/Expires/proxy_cache_valid (avec cet ordre de priorité)
Buffering
Par défaut nginx bufferise les requêtes et les réponses. Cela peut nécessiter de la place disque.
...