[英]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.