ルールエンジンは、ルールの構成方法を簡素化するグラフィカル ユーザーインターフェースを提供します。 リクエストに構成が適用されるかどうかを判断するために、リクエストに含まれるパラメーターに基づいてユーザーリクエストを識別するルールを構成できます。 これにより、Dynamic Content Delivery Network(DCDN)で設定する構成とポリシーを管理するための、より柔軟で正確な方法が提供されます。
背景情報
DCDN コンソールは、有効期間の構成やオリジンへのパラメーターの書き換えなど、多くの基本的な機能を提供します。
ただし、一部の要件では高度な設定が必要です。 たとえば、パス /example を含むリクエストを特定のオリジンサーバーにルーティングする場合があります。 この場合、基本機能とルールエンジンを使用して構成をカスタマイズできます。 さらに、DCDN は EdgeRoutine も提供しており、高い柔軟性を実現します。
構成機能 | 基本機能 | 基本機能 + ルールエンジン | エッジ関数 |
実装 | 一般的な構成 | 柔軟な構成 | 非常に柔軟な構成 |
シナリオ | 一般的な要件 | 高度なカスタム要件 | 完全にカスタマイズされた要件 |
難易度 (ユーザーの技術力) | 低 | 中 | 高 |
構成の柔軟性 | 低 | 中 | 高 |
使用上の注意
ドメイン名ごとに最大 50 個のルールを作成できます。
各ルール内に最大 20 個のサブルールを作成できます。
コンソールを使用するか、API オペレーションを呼び出してルールを作成する場合、正規表現の一致や不一致を含む、正規表現関連の演算子は使用できません。 ただし、演算子を含む既存のルールを表示することはできます。 チケットを送信するか、Edge Security Acceleration (ESA) を選択して、正規表現関連の演算子を使用してください。
コンソールを使用するか、API オペレーションを呼び出してルールを作成する場合、ドメイン名のすべての機能でルールを最大 5 回まで参照できます。
ルールは最大 3 レベルのネストをサポートします。 各レベル内で完全な論理ステートメントを構成できます。
ルールの構文
ルールは、論理演算子と条件式で構成されます。
ロジック
論理演算子は、ルール条件内の式を接続して論理演算を実行します。 次の論理演算子がサポートされています。
and: 論理積演算子。 ルール条件内のすべての式が真の場合にのみ、ルール条件が一致します。
or: 論理和演算子。 ルール条件内の式のいずれかが真の場合、ルール条件が一致します。
条件式の パラメーター
最も単純な式には、次の表に示すコンポーネントが含まれています。
名前 | 対応する パラメーター condition 関数の対応する パラメーターインストールが完了したら | 説明 | 必須 |
条件付き一致 | 一致 | 条件付き一致式。 | はい |
論理判断 | ロジック | 条件付き一致式の論理判断パラメーター。有効な値:and/or。 | はい |
条件付き判断の基準 | 基準 | 条件一致式の判断基準です。 | はい |
一致タイプ | MatchType | 一致させる情報の種類。この式は、ユーザー リクエストで伝達される特定の種類の情報を照合しようとします。 | はい |
一致オブジェクト | MatchObject | 一致タイプの細分化。たとえば、クライアント IP アドレスは、接続ポイント(POP)への接続に使用する IP アドレスと X-Forwarded-For(XFF) IP アドレスに細分化できます。 | いいえ |
一致演算子 | MatchOperator | 一致の演算子。 | はい |
一致値 | MatchValue | ユーザー リクエストで送信される情報と照合される事前設定値。 | はい |
条件判断値の否定 | negate | 条件式の結果を否定するかどうかを指定します。有効な値: true および false。 | はい |
大文字と小文字の区別 | caseSensitive | 一致する値の文字の大文字と小文字を区別するかどうかを指定します。 | いいえ |
ルール名 | name | ルールの名前。 | はい |
有効ステータス | ステータス | ルールの有効ステータス。 | はい |
条件式の構成
一致タイプ | 説明 | 一致オブジェクト | 一致演算子 | 一致値 | 大文字と小文字の区別 | NGINX または Tengine における対応変数 | |
プロトコル | scheme | リクエストが送信されるプロトコル ( HTTP や HTTPS など ) 。 | 該当なし |
|
| 該当なし | $scheme |
リクエストメソッド | method | リクエストメソッド ( GET や PUT など ) 。 | 該当なし |
|
| 該当なし | $request_method |
URI | uri | リクエスト URL 内のパス。リクエストパラメーターは除きます。例: | 該当なし |
| 疑問符 ( |
| $raw_uri または $uri |
ファイル名 | basename | クライアントによってリクエストされたファイルの名前。例: name1。 | 該当なし |
| 疑問符 ( |
| - |
ファイル名拡張子 | extension | クライアントによってリクエストされたファイルの接尾辞。最後のピリオド ( . ) から始まります ( 例: | 該当なし |
| 疑問符 ( |
| - |
ホスト名 | hostname | リクエストに含まれるホスト名。一致の優先順位: リクエスト URL 内のホスト > リクエストの HOST ヘッダー内のホスト。 | 該当なし |
| リクエストのホスト。複数の値を指定できます。 |
| $host または $http_host |
クライアント IP アドレス | clientip | クライアントの IP アドレス。 |
説明 POP への接続に使用する IP アドレスと XFF IP アドレスについては、IP アドレス検証モードをご参照ください。 |
| 240e:XXX:3004:2:3:0:0:3f7 などの IPv6 アドレス、120.209.XXX.XXX/31 などの CIDR ブロックがサポートされています。複数の値を指定できます。 | 該当なし | $remote_addr |
クライアント IP バージョン | clientipVer | IPv4 または IPv6 |
説明 POP への接続に使用する IP アドレスと XFF IP アドレスについては、IP アドレス検証モードをご参照ください。 |
|
| 該当なし | - |
インターネット サービス プロバイダー ( ISP ) | geolocation | クライアントの IP アドレスが属する ISP。 |
説明 POP への接続に使用する IP アドレスと XFF IP アドレスについては、IP アドレス検証モードをご参照ください。 |
| ドロップダウンリストから値を選択するか、文字を入力してオプションをフィルタリングできます。 ID または名前によるあいまい一致がサポートされています。複数の値を指定できます。 | 該当なし | $ip_isp_id |
IP の場所 | geolocation | クライアント IP アドレスの地理的な場所。 |
説明 POP への接続に使用する IP アドレスと XFF IP アドレスについては、IP アドレス検証モードをご参照ください。 |
| ドロップダウンリストから値を選択するか、文字を入力してオプションをフィルタリングできます。 ID または名前によるあいまい一致がサポートされています。複数の値を指定できます。 | 該当なし | $ip_country_id |
リクエストパラメーター | querystring | リクエスト URL に含まれるパラメーター。 | パラメーター名を入力します。 |
| 疑問符 ( |
| $arg_{name} |
リクエストヘッダー | header | リクエストに含まれるヘッダー。 | パラメーター名を入力するか、ドロップダウンリストからパラメーターを選択します。 |
| 複数の値を指定できます。 |
| $http_{name} |
Cookie | cookie | リクエストに含まれる Cookie。 | Cookie 名を入力します。 |
| 疑問符 ( |
| $cookie_{name} |
User-Agent | useragent | リクエスト内の User-Agent ヘッダー。 | 該当なし |
| ドロップダウンリストから値を選択するか、 |
| $http_user_agent |
範囲バケット | range | リクエストはパーセンテージに基づいてグループ化され、実行されます。 | 該当なし |
| パーセンテージを入力します。 | 該当なし | - |
時間範囲 | time | リクエストが開始された時間範囲 ( UTC + 08:00 ) 。例: 09:10 ~ 14:22。 | 該当なし |
| 09:10 ~ 14:22 などの時間範囲を入力します。 | 該当なし | - |
Nginx 変数 | ngxvar | 上記の表のすべての変数が要件を満たせない場合は、NGINX 変数を使用できます。詳細については、「変数のアルファベット順索引」をご参照ください。 | ドロップダウンリストから変数を選択するか、 |
| 複数の値を指定できます。 | 該当なし | ${name} |
IP アドレス検証モード
ルールエンジン機能には 2 つの IP アドレス検証モードがあり、クライアント IP アドレスの POP の決定に影響します。
POP への接続に使用する IP アドレスに基づいて決定する: このモードは、クライアントが POP への接続に使用する IP アドレスを検証します。クライアントが POP に接続するときにプロキシを使用する場合、POP への接続に使用する IP アドレスはプロキシの IP アドレスです。
XFF IP アドレスに基づいて決定する: このモードは、クライアントリクエストの XFF ヘッダーの最初の IP アドレスを検証します。XFF IP アドレスは、クライアントが POP に接続するときにプロキシが使用されているかどうかに関係なく、クライアントの IP アドレスです。
IP アドレス検証モードの選択は、リクエストが POP に送信される前にプロキシを通過するかどうかによって異なります。
ルールを参照する機能が有効になる POP も、IP アドレス検証モードの選択に影響することに注意してください。L2 POP で有効になるオリジン機能の場合、リクエストが通過する L1 POP はプロキシと見なされます。
たとえば、クライアント IP アドレスは 10.10.10.10 で、プロキシ IP アドレスは 192.168.0.1 です。
クライアントが POP に接続するときにプロキシを使用しない場合、次のルールが適用されます。
ユーザーリクエストの XFF ヘッダーの値は
10.10.10.10です。クライアント IP アドレス
10.10.10.10は、クライアントが POP への接続に使用する IP アドレスです。
クライアントが POP に接続するときにプロキシを使用する場合、次のルールが適用されます。
ユーザーリクエストの XFF ヘッダーの値は
10.10.10.10,192.168.0.1です。クライアント IP アドレスは
10.10.10.10です。クライアントが POP への接続に使用する IP アドレスは、プロキシの IP アドレスである
192.168.0.1です。クライアント IP アドレスは、クライアントが POP への接続に使用する IP アドレスではありません。
一部のインターネット サービス プロバイダ (ISP) は、特定の地域のクライアントにプライベート IP アドレスを割り当てる場合があります。そのため、DCDN POP はプライベート IP アドレスからのリクエストを受信する場合があります。
プライベート IP アドレスには次の種類があります。
タイプ A プライベート IP アドレス: 10.0.0.0 ~ 10.255.255.255 サブネットマスク: 10.0.0.0/8
タイプ B プライベート IP アドレス: 172.16.0.0 ~ 172.31.255.255 サブネットマスク: 172.16.0.0/12
タイプ C プライベート IP アドレス: 192.168.0.0 ~ 192.168.255.255 サブネットマスク: 192.168.0.0/16
一致演算子
演算子 | 説明 | |
等しい | matchOperator パラメーターの値は equals です。 | すべての変数が一致値と等しいか、等しくない場合にのみ、条件は true になります。 |
等しくない | matchOperator パラメーターの値は equals で、negate パラメーターの値は true です。 | |
存在する | matchOperator パラメーターの値は exists です。 | 変数が存在するかどうかに関係なく、条件は true になります。 |
存在しない | matchOperator パラメーターの値は exists で、negate パラメーターの値は true です。 | |
いずれかを含む | matchOperator パラメーターの値は contains です。 | 変数に一致値のいずれかが含まれている場合、条件は true になります。最大 32 個の一致値を指定できます。 以下の照合モードがサポートされています。
|
いずれかを除外 | matchOperator パラメーターの値は contains で、negate パラメーターの値は true です。 | |
より大きい | matchOperator パラメーターの値は gt です。 |
|
より小さい | matchOperator パラメーターの値は lt です。 |
|
以上 | matchOperator パラメーターの値は ge です。 |
|
以下 | matchOperator パラメーターの値は le です。 |
|
正規表現一致 | matchOperator パラメーターの値は regex です。 | 一致値として正規表現を入力できます。 説明 コンソールを使用するか API 操作を呼び出すことによってルールを作成する場合、正規表現一致や不一致などの正規表現関連の演算子を使用することはできません。ただし、演算子を含む既存のルールを表示することはできます。チケットを送信するか、Edge Security Acceleration (ESA) を使用して、正規表現関連の演算子を使用してください。 |
正規表現不一致 | matchOperator パラメーターの値は regex で、negate パラメーターの値は true です。 |
ワイルドカード
ワイルドカード | 説明 |
| 1 文字と一致します。 |
| 任意の文字と一致します。 |
ルールを参照できる機能
機能カテゴリ | 機能名 |
オリジンフェッチ構成 | |
オリジン HTTP リクエストヘッダー | |
オリジン HTTP レスポンスヘッダー | |
キャッシュ構成 | |
手順
DCDN コンソール にログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけ、アクション 列の 設定 をクリックします。
対象のドメイン名の左側のナビゲーションウィンドウで、[ルールエンジン] をクリックします。
[ルールの作成] をクリックします。
[ルールの作成] ページで、[ルール名] と [ルールコンテンツ] を設定します。
[送信] をクリックして構成を完了します。