繁体   English   中英

Nginx中的proxy_cache_valid指令缓存错误

[英]proxy_cache_valid directive caching error in nginx

我有一台Nginx服务器,可以为用户提供实时视频内容。 此nginx服务器从上游服务器获取内容,对其进行缓存,并从该缓存中传递对该内容的所有将来请求。 用户的某些请求会得到“ 503服务不可用”,因为尚未生成一部分实时内容。 但是,这被缓存在我的Nginx服务器上。 将来当此内容可用时,即使这样,我的Nginx服务器仍会将缓存的503提供给我的用户。

我检查了https://stackoverflow.com/questions/28994863/nginx-proxy-cache-caches-502-errors

这表示`如果仅指定了缓存时间

proxy_cache_valid 5m; 然后仅缓存200、301和302个响应。

proxy_pass http://MDVR;
proxy_cache_valid    10d;
proxy_cache   a12251;

我期望从上游获得的503不应该被缓存。 这是否意味着我的上游要我的Nginx服务器缓存503错误消息?

我确实在nginx服务器端找到了另一种方法来处理此问题。 一种是通过将这些错误代码设置为仅缓存1分钟,然后nginx将与上游服务器进行检查。 另一个是通过使用error_page指令,然后使用添加的标头分别处理位置? 例如在Nginx中:

server {
  error_page 404 /404.html;
  location = /404.html {
    root   /usr/share/nginx/html;
    add_header Cache-Control "no-cache" always;
  }

但是我不想调用另一个位置块来处理错误代码。 可以在上游服务器上处理吗?

您可以将proxy_no_cache指令与map指令结合使用。 例如:

map $upstream_status $no_cache {
    200     "";
    default 1;
}

proxy_pass http://MDVR;
proxy_no_cache $no_cache;

或将您的后端修复为在发生错误时不设置缓存头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM