Wir verwenden nginx als reverse proxy mit proxy_store (dh. mirror) für statische Daten (Bilder). Der Server bekommt auch laufend Zugriffe auf nicht existente Dateien, der Backend-Server liefert dann 404. Der nginx-Proxy sollte das eine zeitlang cachen, statt jedesmal wieder einen Request auf den Backendserver zu machen.
Falls 404 gecached ist, soll die fallback-Methode also nicht aufgerufen werden, an einer Lösung bin ich aber bisher gescheitert (sowohl try_files als auch error_page rufen @fallback trotz "proxy_cache_valid" auf).
nginx version: nginx/1.6.2
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
[...]
location /images {
proxy_cache_valid 404 5m;
# error_page 404 = @fallback;
try_files $uri @fallback;
}
[...]
location @fallback {
internal;
proxy_pass http://www.foo.bar
proxy_set_header Accept-Encoding "";
# proxy_intercept_errors on;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /var/www/foo/tmp;
}
Würde mich über einen Tipp freuen!
lg, Oliver