Magento CE 1.8:Varnish 不会清除 URL
Posted
技术标签:
【中文标题】Magento CE 1.8:Varnish 不会清除 URL【英文标题】:Magento CE 1.8: Varnish won't Purge URLs 【发布时间】:2015-02-03 12:11:52 【问题描述】:我们在 Debian Root 上运行 Magento CE 1.8,配置如下:
nginx --> Varnish 3.0 --> Apache
我们已经安装了“PageSpeed powered by Varnish”-Extension(但这不是第 3 方模块的问题,我们在其他服务器上也遇到了同样的问题)
现在的问题: 如果我们更改某些产品、删除产品或其他内容,Varnish 不会清除这些 URL(我认为是这样)。 我在编辑产品时收到 504 网关超时。 如果我重新启动清漆服务,一切正常 - 但我们无法通过 magento 后端触发清除。
所以我检查了我的 /etc/default/varnish 文件以检查 deamon_opts:
DAEMON_OPTS="-a :8080 \
-T localhost:6081 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,4G"
这不是默认的 varnish 配置,因为 varnish 前面的 nginx 使用端口 80。所以 Varnish 又有 8080 和 Apache 80(仅限内部)。
Varnish Admin Port 是 6081,这也保存在 PageSpeed-Extension 中。 好的,我们来看看 default.vcl(一些部分):
backend default
.host = "127.0.0.1";
.port = "80";
// 我觉得没问题,我们来看看 acl purge 是否允许 magento 清除 URL:
acl purge
"localhost";
"127.0.0.1";
//一些VCL-stuff的行//现在可以在“sub vcl_recv”中找到清除:
# purge request
if (req.request == "PURGE")
if (!client.ip ~ purge)
error 405 "Not allowed.";
ban("obj.http.X-Purge-Host ~ " + req.http.X-Purge-Host + " && obj.http.X-Purge-URL ~ " + req.http.X-Purge-Regex + " && obj.http.Content-Type ~ " + req.http.X-Purge-Content-Type);
error 200 "Purged.";
好的,现在是问题的详细信息。自从我检查某种日志以来已经有一段时间了,上面写着“超时”(15 秒后),但我忘记了我使用的是哪个工具。如果我想在 Magento 后端编辑产品,就会出现问题。我单击保存,它会加载并加载和加载。然后我在浏览器中得到 504 Gateway Time-Out。
varnishlog 说(在编辑产品时)
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1417774882 1.0
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1417774885 1.0
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1417774963 1.0
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1417774966 1.0
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1417774969 1.0
14 BackendClose b default
18 BackendOpen b default 127.0.0.1 34992 127.0.0.1 80
在我看来,magento 后端无法触发清除过程。在日志中(有超时的那个)是应该被清除的 URL。我认为magento和varnish(CLI?)之间存在某种连接失败
如何解决具体问题? 是否有任何工具、命令或技巧? 我不知道有什么问题。
提前谢谢你!
【问题讨论】:
Magento 1.8.1 及以上版本默认不兼容 Varnish 缓存。我建议改用 Redis。同时Nginx --> Varnish 3.0 --> Apache的配置似乎有点荒唐。它应该是 Varnish 3.0 --> Nginx --> php-FPM 没有 Apache。在您的特定情况下,请查看本指南以获取正确的 Varnish 3.0 配置文件。 ashsmith.io/2012/12/… 你好,Nginx-> varnish -> apache 运行良好,没有理由改变它。我们在另一台运行 Magento CE 1.7 的机器上遇到了同样的问题!所以我认为它不是 Magento 问题。 Varnish 正在运行,Store 超级快! Redis 不是 varnish 的替代品,它可能是 memcached 的替代品。我们需要让清漆运行。几天前,我在您的链接中测试了 vcl。大多数文件与我的 vcl 相似。这是相同的扩展名。 nginx 和 varnish 都可以作为后端服务的代理。您当前的实现使用 nginx 作为代理。您是否为 Nginx 指定了 proxy_pass? nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 【参考方案1】:此命令将清除所有 Url
varnishadm "ban req.url ~/"
【讨论】:
以上是关于Magento CE 1.8:Varnish 不会清除 URL的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 Magento-1.9.4 中的“无法将 VCL 应用到 127.0.0.1:6082:无法从 Varnish 读取响应代码”错误