【问题标题】:ngx_pagespeed behind Varnish, how specify multiple (or correct) DownstreamCachePurgeLocationPrefix?Varnish 后面的 ngx_pagespeed,如何指定多个(或正确的)DownstreamCachePurgeLocationPrefix?
【发布时间】:2015-04-06 00:17:27
【问题描述】:

我们在 Varnish 后面使用 Google PageSpeed 模块和 Nginx。

Pagespeed 仅在第一次点击时提供部分优化的页面,我们使用此配置使 Pagespeed 向 Varnish 发送清除请求,以便一旦 Pagespeed 确实具有完全优化的版本,Varnish 将清除该页面:

pagespeed DownstreamCachePurgeLocationPrefix http://10.128.1.1:6081;
pagespeed DownstreamCachePurgeMethod PURGE;
pagespeed DownstreamCacheRewrittenPercentageThreshold 95;

问题是我们有多个 Varnish 位于多个 pagespeed 接收器前面,并且 varnish 以循环方式引导流量。

因此,例如,如果 app-05 获得流量,则无法确定哪个 varnish 代理缓存了该页面。我可以使用什么 nginx 变量来告诉 pagespeed 什么 varnish 服务器缓存了第一个部分优化的页面?

【问题讨论】:

    标签: nginx varnish mod-pagespeed


    【解决方案1】:

    将清除请求发送回正确的清漆服务器。 在 Varnish 方面,我输入了 vcl_recv:

    set req.http.X-Forwarded-From = server.ip;
    

    然后在 Nginx 上我输入:

    pagespeed DownstreamCachePurgeLocationPrefix http://$http_x_forwarded_from:6081;
    

    我认为这可行,但似乎不行。

    我知道该变量在 Nginx 中使用 Varnish ip 填充(因为我通过 200 响应回显了它),但无论出于何种原因,pagespeed 似乎都不想接受来自该变量的 ip 地址。

    【讨论】:

    • 我尝试将它放在 nginx conf pagespeed FileCachePath /var/ngx_pagespeed_cache; pagespeed ProcessScriptVariables on; 中的服务器 {} 级别,但它不允许 pagespeed 处理 nginx 变量。显然,此设置仅使 nginx 变量可用于 loadfromfile 指令。 :(也许这是不可能的。
    • 更新:我与开发人员取得了联系,他们说他们会添加此功能。 github.com/pagespeed/ngx_pagespeed/issues/903 所以请监控并在发布时更新。在那之前,我们能想到的唯一解决方案就是不使用循环。
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2017-10-06
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多