Magento CE 1.8:Varnish不会清除URL

时间:2014-12-05 10:36:02

标签: magento debian varnish varnish-vcl

我们使用以下配置在Debian Root上运行Magento CE 1.8:

Nginx --> Varnish 3.0 --> Apache    

我们安装了“由Varnish驱动的PageSpeed”-Extension(但它不是第三方模块问题,我们在其他服务器上遇到了同样的问题)

现在问题: 如果我们更改某些产品,删除产品或其他东西,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"    

这不是默认的清漆配置,因为清漆前面的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?)

如何解决具体问题? 有没有工具,命令或技巧? 我不知道问题是什么。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

此命令将清除所有Url的

varnishadm" ban req.url~ /"