1

サーバーに大きな負荷がかかっていたため、最近、VarnishをDrupalの前に配置しました。これは、一般的に非常に満足しています。

残っている唯一の問題は、キャッシュされたデータに無限のリダイレクトループがあることです。これは、HTTPモニタリングを通じて発見されました。フロントページを毎分チェックしています。キャッシュ内のページにはフロントページ全体が含まれている場合がありますが、Locationヘッダーが設定されているため、ユーザーは再びフロントページに移動します。

何がこれを引き起こす可能性があるのか​​はよくわかりませんが、これをどのように追跡できるかについての手がかりもありません。もちろん、これを処理する最善の方法はDrupal側ですが、なぜこれが発生するのかはわかりません。

これが発生したときにケースをログに記録する方法はありますか?または、ワニスでこれを検出し、現在のキャッシュコンテンツを無効としてマークすることは可能ですか?

もちろん、常に意図的なリダイレクトをオリジンサーバーに渡す必要はありませんが、無限ループを引き起こすリダイレクトを渡します。

これをさらに追跡する方法について、いくつかのアイデアを聞きたいと思います。多くの人があらゆる種類のヒントを事前に感謝しています。

4

2 に答える 2

2

私はこれの回避策を見つけました:

sub vcl_fetch {
  // Fix a strange problem: HTTP 301 redirects to the same page sometimes go in$
  if (beresp.http.Location == "http://" + req.http.host + req.url) {
    if (req.restarts > 2) {
      unset beresp.http.Location;
      #set beresp.http.X-Restarts = req.restarts;
    } else {
      return (restart);
    }
  }
}

バックエンドに適切なページを返す2回目(および3回目)のチャンスを与えます。それも失敗した場合、Locationヘッダーは削除されます。これが機能するのは、適切なページに無効なLocationヘッダーが追加されているだけだからです。

于 2012-06-12T07:44:16.663 に答える