@komar При max-age=0 nginx раньше ответы вообще не кешировал, так что лучше его вообще не использовать (щаз хз что, надо проверять).
куски релевантных rfc:
>If an origin server wishes to force a cache to validate every request, it can assign an explicit expiration time in the past to indicate that the response is already stale. Compliant caches will normally validate a stale cached response before reusing it for subsequent requests (see Section 4.2.4).
>If a response includes both an Expires header and a max-age directive, the max-age directive overrides the Expires header, even if the Expires header is more restrictive. This rule allows an origin server to provide, for a given response, a longer expiration time to an HTTP/1.1 (or later) cache than to an HTTP/1.0 cache. This might be useful if certain HTTP/1.0 caches improperly calculate ages or expiration times, perhaps due to desynchronized clocks.
так что впердоливай что-то в духе:
>proxy_http_version 1.1; # В HTTP/1.0 хуй знает что с кешированием
>proxy_ignore_headers Expires Cache-Control;
>add_header Cache-Control "public, must-revalidate, proxy-revalidate";
>expires “Thu, 31 Dec 2016 23:59:59 GMT”; # Дата в прошлом
>proxy_cache_revalidate on;