仅在设置 Cache-Control headers 时启用 UWSGI 缓存

Enable UWSGI caching only when Cache-Control headers are set

我想使用 Nginx 来缓存一个 Uwsgi 应用程序。该应用程序为某些请求设置 Cache-Control header。 Nginx-cache 只应为这些请求启用并遵守 max-age 条件。

所以我正在尝试为上游未设置 Cache-Control 的请求设置 uwsgi_no_cache 1uwsgi_no_cache 0 对于上游设置 Cache-Control header.

的请求

但是,这不起作用:

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

问题出在 $sent_http_cache_control,不幸的是它没有反映上游的 header 设置。

有没有办法在上游设置 Cache-Control 时仅在 Nginx 中启用缓存?

对于上游服务返回的headers,您需要使用$upstream_http_前缀

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

所以你的情况应该是 $upstream_http_cache_control