Спасибо за подсказку, сделал так:
http {
...
map $upstream_http_x_custom_header $custom_header {
default '';
1 'custom_header=1';
}
...
}
location @proxy {
...
add_header Set-Cookie $custom_header;
proxy_hide_header X-Custom-Header;
...
}
Не отдаёт из кеша кешированный адрес на первый запрос, следующие запросы возвращают кешированную страницу, но с куки custom_header (видимо заголовок X-Custom-Header также кешируется). Получается, add_header связан с процессом кеширования, хотя казалось, что заголовок добавляется уже после выборки из кеша.
proxy_ignore_headers не принимает X-Custom-Header
А задача не сложная, необходимо сообщить js-скриптам, что они работают с кешированной страницей (без каких-либо дополнительных запросов к серверу).