1

サイトの 1 つに Varnish をセットアップしています。統計情報の追跡には、オープン ソース ソフトウェアの Piwik を使用しています。

Piwik には、追跡用のプロキシを使用するオプションがあります。つまり、Piwik の URL はソース コードで明らかになりません。基本的に、それは私の wordpress インストールにある PHP ファイルであり、CURL 投稿を Piwik インストールに送信します...

ここで、 https ://github.com/mattiasgeniar/varnish-3.0-configuration-templates を使用してワニスをセットアップし ます。

vcl_fetch に次を追加しました。

if (req.url ~ "piwik") {
    set beresp.ttl = 120s;
    return (hit_for_pass);
}

vcl_recv に次を追加しました。

if (req.url ~ "piwik") {
    return (pass);
}

何が起こるかというと、私が実際にウェブサイトに持っているトラフィックの 50% しか表示されないということです...

私の vcl_fetch 設定のせいだと思います...

pass と hit_for_pass の違いを読み、beresp.ttl は 120 秒間 pass を実行し続けるように varnish をガイドする構成であることを理解しています。

もう1つ、WPのW3TotalCacheは、Max-Ageやexpiresなどのキャッシュヘッダーをpiwik.phpファイルに追加します。Varnish がなくても、問題なく動作し、正しくトラッキングされます。Varnish とこれらのヘッダーの間に何らかの衝突がある可能性はありますか?

私はそれを正しく理解していますか?私の追跡の 50% が見落とされているのはなぜだと思いますか?

ありがとう。

4

1 に答える 1

0

vcl_recv で渡すための Varnish 構成は正しいです。

vcl_fetch にあるコードは削除できます。recv のコードのため、その時点では何の違いもありません。

vcl_fetch で応答ヘッダーをフィルタリングする VCL コードは、渡された応答に対しても実行されることに注意してください。piwik が送信する Set-Cookie をフィルタリングしていると思います。

于 2013-11-06T14:29:16.453 に答える