2015-02-05 41 views
0

我們使用帶有Nginx的Google PageSpeed模塊,在Varnish後面。ngx_pagespeed在Varnish後面,如何指定多個(或正確的)DownstreamCachePurgeLocationPrefix?

的PageSpeed只提供上先打部分優化頁面,我們使用這個配置進行的PageSpeed發送清除請求光油,使上光油將清除頁面一次的PageSpeed確實有一個完全優化的版本:

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

問題是我們有多個清漆坐在多頁速受體前,清漆指示循環中的交通。

因此,如果例如app-05獲取流量,則無法告知哪個varnish代理緩存了該頁面。我可以用什麼nginx變量來告訴pagespeed什麼varnish服務器緩存第一個部分優化的頁面?

回答

0

將清除請求發送回正確的清漆服務器。 上的漆方面,我把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地址。

+0

我試着把它放在nginx conf'pagespeed FileCachePath/var/ngx_pagespeed_cache; pagespeed ProcessScriptVariables on;'但它不允許pagespeed處理nginx變量。顯然這個設置只會使nginx變量可用於loadfromfile指令。 (或許這是不可能的) – JaseC 2015-02-06 00:38:25

+0

更新:我與開發人員取得了聯繫,他們表示他們會添加此功能。https://github.com/pagespeed/ngx_pagespeed/issues/903因此,在發佈時監控並更新。在那之前,我們唯一能想到的解決方案就是不使用循環法。 – JaseC 2015-02-09 22:46:46

相關問題