Ujistěte se, že váš backend nevrací Set-Cookie
záhlaví. Pokud to Nginx uvidí, zakáže ukládání do mezipaměti.
Pokud je to váš případ, nejlepší možností je opravit váš backend. Když oprava backendu není možná, je možné dát Nginxu pokyn, aby ignoroval Set-Cookie
záhlaví
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
Viz dokumentace
proxy_ignore_header
zajistí, že proběhne ukládání do mezipaměti. proxy_hide_header
zajistí, že užitečné zatížení souborů cookie nebude zahrnuto do užitečného zatížení uloženého v mezipaměti. To je důležité, aby se zabránilo úniku souborů cookie prostřednictvím mezipaměti NGINX.
Chtěl bych dodat, že více možností konfigurace a kombinací může zakázat ukládání do mezipaměti proxy v Nginx. Bohužel je to špatně zdokumentováno.
Ve své konfiguraci jsem nastavil proxy_buffering on
a podle očekávání povolil ukládání do mezipaměti.
po procházení několika odpovědí a komentářů jsem zjistil, že tato konfigurace konečně funguje:
10m
=10mb
mezipaměť klíčů, max_size
na 2GB
, inactive=120m
(obnovení ze zdroje po 120 minutách nečinnosti), use_temp_path=off
(pro snížení io)
proxy_cache_valid
- stav mezipaměti 200
a 302
po dobu 60 minut
proxy_cache_path /tmp/cache levels=1:2 keys_zone=default_cache:10m max_size=2g
inactive=120m use_temp_path=off;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 60m;
server {
listen 80;
server_name example.com;
# https://www.nginx.com/blog/nginx-caching-guide
location / {
proxy_cache default_cache;
proxy_buffering on;
proxy_ignore_headers Expires;
proxy_ignore_headers X-Accel-Expires;
proxy_ignore_headers Cache-Control;
proxy_ignore_headers Set-Cookie;
proxy_hide_header X-Accel-Expires;
proxy_hide_header Expires;
proxy_hide_header Cache-Control;
proxy_hide_header Pragma;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_pass http://ip-of-host:80;
#set $memcached_key "$uri?$args";
#memcached_pass 127.0.0.1:11211;
# error_page 404 502 504 = @fallback;
}
}