Google Cloud Load Balancer缓存不会过期

时间:2018-03-30 21:18:59

标签: google-cloud-platform

这是我第一次使用GC实例和负载均衡器。我有一个运行带有nginx的基本WordPress站点的计算引擎实例。它做得很好。我添加了HTTP(S)负载均衡器作为https。运行一些测试,一切都很好。打开云CDN,似乎最初工作正常(虽然它通过日志记录验证这一点)。昨天我发现重定向无法正常工作。我用24小时前修复了nginx。如果我绕过负载均衡器并直接进入服务器,那么“修复”从那时起就一直有效。如果我通过负载均衡器(使用curl)请求,我得到的结果与昨天相同。我已经从CDN中使整个缓存无效。等了几个小时,没有变化。然后从负载均衡器中完全删除CDN选项。从那以后它已经超过2个小时了,我仍然像昨天一样得到缓存的URL。据我所知,谷歌正在使用Cache-control标头,这很短。错误的请求标头:

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 30 Mar 2018 20:48:34 GMT
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate
Strict-Transport-Security: max-age=31536000;includeSubdomains
Via: 1.1 google
Transfer-Encoding: chunked

我缺少什么?

1 个答案:

答案 0 :(得分:0)

好吧,傻,我,这根本不是缓存问题。红鲱鱼导致泪痕。 Nginx重定向sytnax只是简单地在GC负载均衡器后面工作。

我已更改的原始重定向规则(直接在服务器上工作正常,但通过负载均衡器完全没有):

rewrite ^(.*) https://www.example.com$request_uri? permanent;

在该行下面添加此语句现在可以通过负载均衡器而不是:

if ($http_x_forwarded_proto = "http") { 
    return 301 https://www.example.com$request_uri; 
 }

这对我来说仍然是一个谜,但我恢复了生命和理智。