【问题标题】:Google Cloud Load Balancer Cache Won't Expire谷歌云负载均衡器缓存不会过期
【发布时间】:2018-09-09 22:00:45
【问题描述】:

这是我第一次使用 GC 实例和负载均衡器。我有一个使用 nginx 运行基本 WordPress 站点的 Compute Engine 实例。它做得很好。我添加了一个 HTTP(S) 负载平衡器作为 https。运行一些测试,一切都很好。打开云 CDN,最初似乎工作正常(尽管它让我通过日志来验证这一点)。昨天我注意到重定向无法正常工作。我在 24 小时前用 nginx 修复了这个问题。如果我绕过负载平衡器并直接访问服务器,那么“修复”从那时起一直有效。如果我通过负载均衡器(使用 curl)请求,我会得到与昨天相同的糟糕结果。我已使 CDN 中的整个缓存无效。等了几个小时,没有变化。然后从负载均衡器中完全删除 CDN 选项。从那时起已经超过 2 小时了,我仍然像昨天一样获取缓存的 URL。根据我的阅读,Google 正在使用 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

我错过了什么?

【问题讨论】:

  • 我的问题清楚地表明我已经完成了失效。此外,从负载均衡器中完全删除了 Cloud CDN。顺便说一句,几天后缓存的内容现在仍然没有改变。听起来像是负载平衡或 CDN 的错误实现。
  • 如果您尝试以隐身模式打开网站,它是否仍显示为 24 小时前?
  • 是的。我在命令行上使用 curl 主要是为了避免与浏览器相关的问题。谢谢。

标签: google-cloud-platform


【解决方案1】:

好吧,我傻了,这根本不是缓存问题。红鲱鱼导致眼泪的痕迹。 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; 
 }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2020-12-31
    • 2019-10-04
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    相关资源
    最近更新 更多