2014-07-03 5 views
17

Ich bin mit Nginx als Webserver und will eine Browser-Caching-Methode implementieren, so dass die Benutzer halte Kopien von statischen unveränderten Dateien lokal und nur geänderte Dateien herunterladen. Einer der Vorschläge war, den Zeitstempel der Dateien zu verwenden, um die geänderten Dateien herauszufinden und sie nur zu aktualisieren, aber dies ist in meinem Fall nicht möglich, da nach jeder neuen Implementierung eine neue Version der gesamten Webanwendung und alle Zeitstempel der Dateien erstellt werden Veränderung.So konfiguriert ETag auf Nginx

recherchieren ich ein wenig über die ETag-Header, und es schien, als eine ziemlich gute Lösung, aber ich fand heraus, dass Etags nicht offiziell von Nginx noch unterstützt.

Gibt es eine Möglichkeit, die Etags auf Nginx oder alternativen Lösungen zu implementieren?

+1

Wenn Sie deaktivieren 'gzip' mit' gzip aus; 'Linie können Sie sehen,' etag' Header auf Ihre Antwort. – efkan

+2

Beachten Sie, dass nginx das Datum der letzten Änderung der Datei und die Dateigröße verwendet, um das Etag zu generieren. –

+0

Wenn Sie eine Beschwerde von einem Sicherheitsscanner (Nikto usw.) über etags undichten Inodes zu sehen, es ist wahrscheinlich ein falsch positives Ergebnis, wenn Sie nginx laufen lassen, weil [nginx nicht Inodes in etags umfasst] (http://serverfault.com/questions/690341/Algorithmus-hinter-Nginx-Etag-Generation). Es kann in Apache deaktiviert werden, obwohl Apache standardmäßig Inodes ausleckt (siehe die 'FileETag' Direktive). – Synchro

Antwort

27

Ihre Nginx-Upgrade.

Syntax:  etag on | off; 
Default: etag on; 

Context: http, server, location 

This directive appeared in version 1.3.3. 

Enables or disables automatic generation of the “ETag” response header field for static resources. 

Quelle: http://nginx.org/en/docs/http/ngx_http_core_module.html#etag

+8

Vielen Dank, ich habe es versucht und die Etag-Header werden zum HTTP-Header hinzugefügt, aber die Cache-Validierung beruht auf den Zeitstempeln der Dateien, auch wenn ich Last Modified-Header entfernt habe. Ich möchte, dass die Dateien überprüft werden, wenn sie wirklich Änderungen am Inhalt haben und nicht nur die Zeitstempel der Dateien überprüfen – HanouaJ

7

Alle aktuellen Versionen von Nginx (Stand 2016) werden diese automatisch eingestellt.

Zum Beispiel:

location /img { 
    root /path/to/public; 
} 

und der Response-Header Etag + Last-Modified Header zurückgegeben werden.