2016-06-28 5 views
11

Ich habe einen Caching-Server für eine Site über nginx 1.6.3 auf CentOS 7 eingerichtet und konfiguriert, HTTP-Header zu den bereitgestellten Dateien hinzuzufügen, um diese Dateien anzuzeigen kam aus dem Caching-Server (HIT, MISS oder BYPASS) wie folgt:So zeigen Sie das Alter einer zwischengespeicherten Nginx-Datei in Headern an

add_header X-Cached $upstream_cache_status; 

Allerdings würde Ich mag, um zu sehen, ob es einen Weg gibt, einen Header angezeigt werden, das Alter der Cache-Datei, wie meine hinzufügen Lösung hat proxy_cache_valid 200 60m; eingestellt, und ich möchte überprüfen, ob es diese Einstellung respektiert.

Also, was ich suche wäre so etwas wie:

add_header Cache-Age $upstream_cache_age; 

ich nicht in der Lage bin, etwas Derartiges zu finden, obwohl, können Sie helfen?

Dank

+0

Sie können entweder hart Code jene Antwort, die Zeit dieser Datensatz hinzufügen war Cached und Ablauf in Sekunden und lassen Sie Ihr Programm die Berechnung durchführen, oder Sie benötigen Nginx + Lua + Custom Cache-Modul? Welcher Ansatz ist für Sie möglich? –

Antwort

1

Die nginx Dokumentation ist ziemlich erschöpfend - es mit dem direkten relativ Alter der Cache-Datei keine Variable ist. durch Aufnehmen seinen Date Kopfes durch $upsteam_http_date

Der beste Weg wäre, die $upstream_http_ Variable Klasse zu verwenden, um das absolute Alter der Ressource zu erhalten.

add_header X-Cache-Date $upstream_http_date; 

Für die semantische Bedeutung des Date Header-Feldes in HTTP/1.1, siehe rfc7231#section-7.1.1.2, die es als die Zeit der HTTP-Antwort Generation beschreibt, so, im Grunde sollte dies genau erreichen, was Sie wollen (vor allem wenn das Backend mit dem gleichen Zeitzähler läuft).

0

Ich habe einige Zeit versucht, dieses Problem mit der Nginx Perl module zu lösen, die keinen Zugriff auf $upstream_http_NAME Header zu haben scheint, mit denen Sie erfolgreich die aktuelle Zeit aus einem Zeitstempel-Header berechnen können, den Ihre Proxy-Anwendung während der Renderzeit erstellt hat.

Alternativ können Sie eine andere Caching-Schicht-Architektur wie Varnish Cache verwenden, die in der Tat den Header Age HTTP-Antwort bereitstellt:

http://book.varnish-software.com/3.0/HTTP.html#age

Verwandte Themen