2014-07-03 15 views
17

Używam Nginx jako webserwera i chcę zaimplementować metodę buforowania przeglądarki, aby użytkownicy mogli przechowywać kopie statycznych niezmienionych plików lokalnie i pobierać tylko zmienione pliki. Jedną z propozycji było użycie plików timestamp do wykrycia zmienionych plików i odświeżenia ich tylko, ale nie jest to możliwe w moim przypadku, ponieważ po każdym nowym wdrożeniu tworzona jest nowa wersja całej aplikacji internetowej i wszystkie znaczniki czasu plików zmiana.Jak skonfigurować ETag na Nginxie

Zbadałem trochę o nagłówku ETag i wydawało mi się to całkiem dobrym rozwiązaniem, ale dowiedziałem się, że Etagi nie są jeszcze oficjalnie wspierane przez Nginx.

Czy istnieje sposób na wdrożenie Etags na Nginx lub na jakiekolwiek alternatywne rozwiązania?

+1

Jeśli wyłączysz 'gzip' używając' gzip off; ', możesz zobaczyć nagłówek' etag' na swojej odpowiedzi. – efkan

+2

Należy pamiętać, że nginx używa daty ostatniej modyfikacji pliku i rozmiaru pliku do wygenerowania etag. –

+0

Jeśli widzisz skargę ze skanera bezpieczeństwa (Nikto itp.) Na temat wycieków ikodów etags, jest to prawdopodobnie fałszywe potwierdzenie, jeśli używasz nginx, ponieważ [nginx nie zawiera i-inów w etagach] (http://serverfault.com/questions/690341/algorithm-behind-nginx-etag-generation). Można go wyłączyć w apache, choć domyślnie apache ma nieszczelne i-węzły (zobacz dyrektywę 'FileETag'). – Synchro

Odpowiedz

27

Uaktualnij swój Nginx.

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. 

Źródło: http://nginx.org/en/docs/http/ngx_http_core_module.html#etag

+8

Dziękuję, próbowałem go i nagłówek Etag są dodawane do nagłówka HTTP, ale nadal walidacja pamięci podręcznej opiera się na znacznikach czasu plików nawet, że usunięto nagłówek Last Modified. Chcę, aby pliki były sprawdzane, jeśli rzeczywiście zawierają zmiany w treści, a nie tylko poprzez weryfikację znaczników czasowych plików – HanouaJ

7

Wszystkie najnowsze wersje Nginx (poczynając od 2016 roku) zostaną automatycznie ustawione nich.

Na przykład

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

i nagłówki odpowiedzi będą zwrócone Etag + Last-Modified nagłówków.