簡體   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