ルールエンジンは、ルールの構成方法を簡素化するグラフィカルユーザーインターフェイスを提供します。 リクエストに構成が適用されるかどうかを判断するために、リクエストに含まれるパラメータに基づいてユーザーリクエストを識別するルールを構成できます。 これにより、Alibaba Cloud CDN で設定する構成とポリシーを管理するための、より柔軟で正確な方法が提供されます。
背景情報
CDN コンソールは、ほとんどのシナリオに適したキャッシュの有効期限ルールやパラメータの書き換えなど、基本的な機能を提供しますが、すべてのユーザーの要件を満たしているわけではありません。 たとえば、CDN は /example などの特定のパスを含むリクエストを特定のオリジンサーバーアドレスにリダイレクトすることをサポートしていません。 柔軟なカスタム構成を実装するには、基本機能とルールエンジンを一緒に使用できます。 より複雑な構成には、EdgeScript を使用することもできます。 詳細については、「EdgeScript の概要」をご参照ください。
機能 | 基本機能 | 基本機能 + ルールエンジン | EdgeScript |
構成 | 一般的な構成 | 柔軟な構成 | 非常に柔軟な構成 |
シナリオ | 一般的な要件 | 高度なカスタム要件 | 完全にカスタマイズされた要件 |
使いやすさ (必要な技術知識) | 低 | 中 | 高 |
構成の柔軟性 | 低 | 中 | 高 |
使用上の注意
ドメイン名ごとに最大 50 個のルールを作成できます。
各ルール内に最大 20 個のサブルールを作成できます。
コンソールを使用するか、API 操作を呼び出してルールを作成する場合、正規表現の一致や不一致を含む、正規表現関連の演算子は使用できません。 ただし、演算子を含む既存のルールを表示することはできます。 正規表現関連の演算子を使用するには、チケットを送信するか、Edge Security Acceleration (ESA) を選択してください。
コンソールを使用するか、API 操作を呼び出してルールを作成する場合、ドメイン名のすべての機能でルールを最大 5 回まで参照できます。
ルールは最大 3 レベルのネストをサポートします。 各レベル内で完全な論理ステートメントを構成できます。
ルールの構文
ルールは、論理演算子と条件式で構成されます。
ロジック
論理演算子は、ルール条件内の式を接続して論理演算を実行します。 次の論理演算子がサポートされています。
and: 論理積演算子。 ルール条件内のすべての式が真の場合にのみ、ルール条件が一致します。
or: 論理和演算子。 ルール条件内の式のいずれかが真の場合、ルール条件が一致します。
条件式のパラメータ
最も単純な式には、次の表で説明されているコンポーネントが含まれています。
名前 | 関数における対応するパラメータ条件ヒント:関数 | 説明 | 必須 |
条件一致 | match | 条件一致式。 | はい |
論理判断 | logic | 条件一致式の論理判断パラメータ。 有効な値: and/or。 | はい |
条件判断の基準 | criteria | 条件一致式の判断基準。 | はい |
一致タイプ | MatchType | 一致させる情報のタイプ。 式は、ユーザーリクエストに含まれる特定のタイプの情報と一致させようとします。 | はい |
一致オブジェクト | MatchObject | 一致タイプの細分化。 たとえば、クライアント IP アドレスは、接続ポイント (POP) への接続に使用する IP アドレスと X-Forwarded-For (XFF) IP アドレスに細分化できます。 | いいえ |
一致演算子 | MatchOperator | 一致の演算子。 | はい |
一致値 | MatchValue | ユーザーリクエストに含まれる情報と照合されるプリセット値。 | はい |
条件判断値の否定 | negate | 条件式の結果を否定するかどうかを指定します。 有効な値: true および false。 | はい |
大文字と小文字の区別 | caseSensitive | 一致値の文字で大文字と小文字を区別するかどうかを指定します。 | いいえ |
ルール名 | name | ルールの名前。 | はい |
有効ステータス | status | ルールの有効ステータス。 | はい |
条件式の構成
一致タイプ | 関数における対応するパラメータ条件 関数 | 説明 | 一致オブジェクト | 一致演算子 | 一致値 | 大文字と小文字の区別 | 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 アドレスを割り当てる場合があります。 そのため、CDN 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 です。 | すべての変数が一致値と等しいか等しくない場合にのみ、条件は真です。 |
以下に等しくない | matchOperator パラメータの値は equals で、negate パラメータの値は true です。 | |
存在する | matchOperator パラメータの値は exists です。 | 変数が存在するかどうかに関係なく、条件は真です。 |
存在しない | matchOperator パラメータの値は exists で、negate パラメータの値は true です。 | |
いずれかを含む | matchOperator パラメータの値は contains です。 | 変数が一致値のいずれかを含んでいるか、または含んでいない場合、条件は真です。 最大 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 文字と一致させることができます。 |
| 任意の文字と一致させることができます。 |
ルールを参照できる機能
機能 | 参照 |
基本構成 | |
キャッシュ設定 | |
オリジン設定 | |
アクセスコントロール | |
パフォーマンスの向上 | |
ビデオ関連の設定 | |
トラフィック調整 |
手順
Alibaba Cloud CDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
左側のナビゲーションツリーで、[ルールエンジン] をクリックします。
ルールの追加 をクリックします。
ルールの追加 ページで、ルール名 パラメータと [ルールコンテンツ] パラメータを構成します。
送信 をクリックします。