Включить кэширование UWSGI, только если заданы заголовки Cache-Control - PullRequest
1 голос
/ 05 мая 2020

Я хотел бы использовать Nginx для кеширования приложения Uwsgi. Приложение устанавливает заголовок Cache-Control для некоторых запросов. Кэш Nginx должен быть включен только для этих запросов и должен соответствовать условию max-age.

Итак, я пытаюсь установить uwsgi_no_cache 1 для запросов, где исходящий поток не устанавливает Cache-Control. И uwsgi_no_cache 0 для запросов, в которых восходящий поток устанавливает заголовок Cache-Control.

Однако это не работает:

set $no_cache 1;
if ($sent_http_cache_control) {
    set $no_cache 0;
}
uwsgi_no_cache $no_cache;

Проблема заключается в $sent_http_cache_control, к сожалению, это не так. отражать заголовок, установленный в восходящем направлении.

Есть ли способ включить кэширование только в Nginx, когда Cache-Control настроен в восходящем направлении?

1 Ответ

2 голосов
/ 10 мая 2020

Для заголовков, возвращаемых восходящей службой, вам нужно будет использовать префикс $upstream_http_

https://nginx.org/en/docs/http/ngx_http_upstream_module.html#var_upstream_http_

Таким образом, в вашем случае это должно быть $upstream_http_cache_control

...