首页 > 解决方案 > Nginx 代理显示旧内容

问题描述

我的设置存在一些问题,其中包含:代理 -> CDN 缓存 -> 源。

它的设置是,如果我们更新源上的内容,我们会清除 CDN 缓存,因此我希望在实时站点(代理)上看到更新。但有时,大约 20-30% 的时间这不会反映在代理上,即使我看到CDN 已正确更新。我无法理解为什么。

我已经关闭了代理上的缓存。多次清除缓存最终将在清除后代理不显示正确内容的时间显示正确的内容。

以下不同阶段的响应。

CDN 来自 Verizon 的 Microsoft azure

原标题: 源响应头

CDN 标头: 在此处输入图像描述

实时标题: 实时响应标头

代理配置:

server {
    server_name <DOMAIN>;
    location / {
      proxy_no_cache 1;
      proxy_cache_bypass 1; 
      proxy_redirect off;
      
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Real-IP       $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_headers_hash_max_size 512;
      proxy_headers_hash_bucket_size 128;
      
      proxy_hide_header Cache-Control;
      add_header Cache-Control max-age=120; #Browser cache of 120s
      proxy_pass "https://<CDN-BASE-URL>$request_uri";
    }
}

仔细观察, Last-Modified似乎是不匹配的,这可能是原因吗?

标签: nginxcachingproxycdnpurge

解决方案


推荐阅读