条件のトラブルシューティング

条件の使用で問題が生じた場合、まず以下をご確認ください。

Apply if フィールドの if 文を確認する

条件に関するほとんどの問題は Apply if パラメーターで発生します。このパラメーターでは設定オブジェクトに条件を適用する状況を指定する実際の VCL 変数を表す論理式が使用されているためです。条件の使用に問題がある場合は、まず if () が間違った場所に置かれていないか確認します。条件の if 文は暗黙的に指定され、条件ウィンドウの Apply if フィールドに入力する必要はありません。評価された式 (例: req.url ~ "^/special/") を普通に入力します。

正規表現の否定マッチングの構成を確認する

正規表現 (regex) の否定マッチングに問題が無いかご確認ください。特に条件で特定の URL を除外するために使用している場合にその可能性があります。|| または && の演算子や複数のパターンを使用しながら、!~ (正規表現の否定マッチング) を使用して特定の URL を除外する式を作成する場合はご注意ください。

例えば /admin で始まるものを除くすべての URL に条件を適用したい場合、Apply if フィールドに入力する条件は req.url !~ "^/admin" になります。また /internal で始まる URL を除外したい場合は !(req.url ~ "^/admin" || req.url ~ "^/internal") という式になります。

一般的な正規表現の形式ミスを確認する

以下の一般的な正規表現の問題がトラブルの原因でないかご確認ください。

  • 大文字と小文字の区別に問題がある。 Varnish の正規表現は、デフォルトでは大文字と小文字を区別します。大文字と小文字を区別しないチェックを行うには (?i) のフラグを使用する必要があります。
  • フォワードスラッシュをエスケープしている。 Varnish の正規表現ではフォワードスラッシュをエスケープする必要はありません。

チートシートでは正規表現を使用した VCL の使用例を紹介しています。

Back to Top