我们使用Google PageSpeed模块和Vginish背后的Nginx。
Pagespeed仅在首次点击时提供部分优化的页面,我们使用此配置将Pagespeed发送清除请求发送到Varnish,以便一旦Pagespeed确实具有完全优化的版本,Varnish将清除该页面:
pagespeed DownstreamCachePurgeLocationPrefix http://10.128.1.1:6081;
pagespeed DownstreamCachePurgeMethod PURGE;
pagespeed DownstreamCacheRewrittenPercentageThreshold 95;
问题是我们有多个Varnish坐在多个pagespeed受体前面,清漆指示循环中的流量。
因此,如果app-05获取流量,则无法确定哪个清漆代理缓存了该页面。我可以使用什么nginx变量来告诉pagespeed哪个varnish服务器缓存了第一个部分优化的页面?
答案 0 :(得分:0)
将清除请求发送回正确的清漆服务器。 在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地址。