Hallo,
ich habe ein Caching Problem, wenn ich mit einem beliebigen Browser über die Seite surfe und eine Seite das zweite Mal besuche wird sie aus dem Cache des nginx ausgeliefert (x-Cache-Status. Hit). Soweit so gut.
Wenn ich aber den Cache leere und mit Browser A (z.B Chrome) eine URL besuche und im Anschluss mit Browser B (Firefox oder curl) die gleiche URL besuche so bekomme ich ein MISS. Wenn ich den Aufruf mit Browser B wiederhole ein HIT.
Wenn ich aber mit curl von zwei unterschiedlichen Maschinen die gleiche URL aufrufe so klappt es einwandfrei.
curl -I http://meinedomain/test.html
Es scheint irgendwie so, als wenn hier irgendwas mit in den Cache-Key einfliest, was ich nicht dort haben möchte.
Im ersten Schritt möchte ich dort nur die URLs inkl. Argumente berücksichten. Später auch ein spezielles Cookie.
Version: nginx version: nginx/1.11.3 (nginx-plus-r10) (30 Tage Trial)
Hier meine Konfiguration
### proxy.conf
proxy_cache_path /srv/nginx/cache/test levels=1:2 keys_zone=test_cache:128m inactive=120d max_size=25G;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
listen 80;
server_name <meineDomain.de>;
access_log /var/log/nginx/fliesenrabatte.access.log shop;
error_log /var/log/nginx/fliesenrabatte.error.log;
proxy_cache fliesenrabatte_cache;
rewrite_log on;
proxy_set_header Host <meineDomain.de>;
proxy_cache_key $request_uri;
# Caching deaktivieren
# NoCache URLs
if ($request_uri ~* "(/admin.*|/brand.*|/user.*|/login.*)") {
set $no_cache 1;
}
proxy_no_cache $no_cache;
# Startseite
location ~ /$ {
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
proxy_pass http://meinupstream;
proxy_cache_purge $purge_method;
}
# Cachen
location ~* \.(html|gif|jpg|png|js|css|pdf|woff|woff2|otf|ttf|eot|svg)$ {
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
proxy_pass http://meinupstream;
proxy_cache_purge $purge_method;
}
# nicht cachen (Warenkorb usw)
location ~* \.(cfc|cfm|htm)$ {
proxy_cache off;
proxy_pass http://meinupstream;
}
# Fuer Wildcard purging notwendig, da String auf Wildcard endet
location / {
allow 1.1.1.1;
deny all;
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
proxy_pass http://meinupstream;
proxy_cache_purge $purge_method;
}
}
### site-conf
server_tokens off;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
proxy_cache_valid 200 120d;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
add_header X-Cache-Status $upstream_cache_status;
upstream meinupstream {
server meinedomain.de:80;
}
Wäre toll, wenn jemand eine Idee hat und mir helfen kann.
Herzlichen Dank!
Carsten