概要
ルールエンジンは、ルールの構成方法を簡素化するグラフィカルユーザーインターフェイスを提供します。 ルールを設定して、リクエストに含まれるパラメーターに基づいてユーザーリクエストを識別できます。 これは、設定がリクエストに適用されるかどうかを判断するのに役立ち、Alibaba Cloud CDNで設定する設定とポリシーをより柔軟かつ正確に管理する方法を提供します。
背景情報
Alibaba Cloud CDNコンソールには、キャッシュ有効期限ルールやパラメーターの書き換えなど、ほとんどのシナリオに適していますが、すべてのユーザーの要件を満たしているわけではありません。 たとえば、Alibaba Cloud CDNは、/exampleなどの特定のパスを含むリクエストを特定の配信元サーバーアドレスにリダイレクトすることをサポートしていません。 柔軟なカスタム設定を実装するには、基本機能をルールエンジンとともに使用します。 より複雑な設定にEdgeScriptを使用することもできます。 詳細については、「EdgeScriptの概要」をご参照ください。
機能 | 基本機能 | 基本機能 + ルールエンジン | EdgeScript (プログラム可能な設定) |
設定 | 一般設定 | 柔軟な構成 | 柔軟性の高い構成 |
シナリオ | 一般的な要件 | 高度なカスタム要件 | 完全にカスタマイズされた要件 |
使いやすさ (技術知識が必要) | 低い | 中 | 高い |
設定の柔軟性 | 低い | 中 | 高い |
使用上の注意
ドメイン名ごとに最大50個のルールを作成できます。
各ルールに最大20のサブルールを作成できます。
コンソールを使用するか、API操作を呼び出してルールを作成する場合、正規表現の一致や不一致など、正規表現関連の演算子は使用できません。 ただし、演算子を含む既存のルールを表示できます。
コンソールを使用するか、API操作を呼び出してルールを作成すると、ドメイン名のすべての機能で最大5回ルールを参照できます。
ルールは最大3つのレベルのネストをサポートします。 各レベル内で完全な論理ステートメントを設定できます。
ルールの構文
ルールは、論理演算子と条件式で構成されます。
ロジック
論理演算子は、式の条件を評価し、ルールに一致するかどうかを判断するために使用されます。 次の論理演算子がサポートされています。
AND: 論理積演算子。 ルールは、すべての条件が真の場合にのみ一致します。
OR: 論理和演算子。 条件の1つが真の場合、ルールは一致します。
条件式のパラメータ
粒度が最も細かい条件式には、次の表のパラメーターが含まれています。
パラメーター | 条件関数の対応するパラメーター | 説明 | 必須 |
条件付き一致 | マッチ | 条件付き一致式。 | 可 |
論理的判断 | ロジック | 条件一致式の論理判定パラメータ。 有効な値: および /または。 | 可 |
条件付き判断の基準 | 基準 | 条件一致式の判定基準。 | 可 |
マッチタイプ | MatchType | 一致する情報のタイプ。 この式は、ユーザーの要求に含まれる特定のタイプの情報と一致するように試みます。 | 可 |
一致オブジェクト | MatchObject | 一致タイプのサブディビジョン。 例えば、クライアントIPアドレスは、プレゼンスポイント (POP) に接続するために使用されるIPアドレスと、X − Forwarded − For (XFF) IPアドレスとに再分割することができる。 | 任意 |
一致演算子 | MatchOperator | マッチのオペレーター。 | 可 |
一致する値 | マッチ値 | プリセット値は、ユーザーリクエストに含まれる情報と照合されます。 | 可 |
条件判定値否定 | 否定する | 条件式の結果をネゲートするかどうかを指定します。 有効な値は、true および false です。 | 可 |
大文字と小文字を区別 | caseSensitive | 一致値の文字が大文字と小文字を区別するかどうかを指定します。 | 任意 |
ルール名 | name | ルールの名前を設定します。 | 可 |
有効ステータス | status | ルールの有効ステータス。 | 可 |
条件式の設定
マッチタイプ | 条件関数の対応するパラメーター | 説明 | 一致オブジェクト | マッチ演算子 | マッチ値 | ケースの機密性 | NGINXまたはTengineの対応する変数 |
プロトコル | scheme | HTTPやHTTPSなど、リクエストが送信されるプロトコル。 | N/A |
|
| N/A | $スキーム |
リクエストメソッド | method | GETやPUTなどのリクエストメソッド。 | N/A |
|
| N/A | $request_method |
URI | ウリ | リクエストURLのパス (リクエストパラメーターを除く) 。 例: | N/A |
| 疑問符 ( |
| $raw_uriまたは $uri |
ファイル名 | basename | クライアントによって要求されたファイルの名前。 例: name1。 | N/A |
| 疑問符 ( |
| - |
ファイル名拡張子 | エクステンション | クライアントによって要求されたファイルのサフィックス。最後のピリオド (.) から始まります。たとえば、 | N/A |
| 疑問符 ( |
| - |
ホスト名 | hostname | リクエストに含まれるホスト名。 一致する優先度: リクエストURLのホスト> リクエストのhostヘッダーのホスト。 | N/A |
| リクエストのホスト。 複数の値を指定できます。 |
| $hostまたは $http_host |
クライアント IP アドレス | clientip | クライアントの IP アドレス。 |
説明 POPおよびXFF IPアドレスへの接続に使用されるIPアドレスについては、「IPアドレス検証モード」をご参照ください。 |
| 240e:XXX:3004:2:3:0:0:3f7などのIPv6アドレスと、120.209.XXX.XXX/31などのCIDRブロックがサポートされています。 複数の値を指定できます。 | N/A | $remote_addr |
クライアントIPバージョン | clientipVer | IPv4またはIPv6 |
説明 POPおよびXFF IPアドレスへの接続に使用されるIPアドレスについては、「IPアドレス検証モード」をご参照ください。 |
|
| N/A | - |
インターネットサービスプロバイダー (ISP) | ジオロケーション | クライアントのIPアドレスが属するISP。 |
説明 POPおよびXFF IPアドレスへの接続に使用されるIPアドレスについては、「IPアドレス検証モード」をご参照ください。 |
| ドロップダウンリストから値を選択するか、文字を入力してオプションをフィルタリングできます。 IDまたは名前によるあいまい一致がサポートされています。 複数の値を指定できます。 | N/A | $ip_isp_id |
IPの場所 | ジオロケーション | クライアントIPアドレスの地理的な場所。 |
説明 POPおよびXFF IPアドレスへの接続に使用されるIPアドレスについては、「IPアドレス検証モード」をご参照ください。 |
| ドロップダウンリストから値を選択するか、文字を入力してオプションをフィルタリングできます。 IDまたは名前によるあいまい一致がサポートされています。 複数の値を指定できます。 | N/A | $ip_country_id |
リクエストパラメーター | querystring | リクエストURLで実行されるパラメーター。 | パラメータ名を入力します。 |
| 疑問符 ( |
| $arg_{name} |
リクエストヘッダー | header | リクエストに含まれるヘッダー。 | パラメータ名を入力するか、ドロップダウンリストからパラメータを選択します。 |
| 複数の値を指定できます。 |
| $http_{name} |
Cookie | cookie | リクエストに含まれるcookie。 | クッキー名を入力します。 |
| 疑問符 ( |
| $cookie_{name} |
User-Agent | useragent | リクエストヘッダーのUser-Agentフィールド。 | N/A |
| ドロップダウンリストから値を選択するか、 |
| $http_user_agent |
範囲バケット | range | リクエストは、割合に基づいてグループ化され、実行されます。 | N/A |
| パーセンテージを入力します。 | N/A | - |
時間範囲 | time | リクエストが開始された時間範囲 (UTC + 8) 。 例: 09:10から14:22。 | N/A |
| 09:10 ~ 14:22などの時間範囲を入力します。 | N/A | - |
Nginxヴァール | ngxvar | テーブル内の前述のすべての変数が要件を満たさない場合は、NGINX変数を使用できます。 詳細については、「変数のアルファベットインデックス」をご参照ください。 | ドロップダウンリストから変数を選択するか、 |
| 複数の値を指定できます。 | N/A | ${name} |
IPアドレス検証モード
ルールエンジン機能には2つのIPアドレス検証モードがあり、クライアントIPアドレスのPOPの決定に影響します。
Determine based on the IP address that is used to connect to the POP: このモードは、クライアントがPOPに接続するために使用するIPアドレスを検証します。 クライアントがPOPに接続するときにプロキシが使用される場合、POPに接続するために使用されるIPアドレスはプロキシのIPアドレスです。
XFF IPアドレスに基づいて決定する: このモードは、クライアント要求のXFFヘッダーの最初のIPアドレスを検証します。 XFF IPアドレスは、クライアントがPOPに接続するときにプロキシが使用されるかどうかに関係なく、クライアントIPアドレスです。
IPアドレス検証モード間の選択は、要求がPOPに送信される前にその要求がプロキシを通過するかどうかに基づいて変化する。
ルールを参照する機能が有効になるPOPは、IPアドレス検証モード間の選択にも影響することに注意してください。 L2 POPに有効なback-to-origin機能の場合、リクエストが通過する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アドレスではありません。
一致演算子
演算子 | 条件関数の対応するパラメーター | 説明 |
等しい | matchOperatorパラメーターの値が等しい。 | 条件は、すべての変数が一致値に等しいか、または等しくない場合にのみ真です。 |
等しくない | matchOperatorパラメーターの値は等しく、negateパラメーターの値はtrueです。 | |
存在する | matchOperatorパラメーターの値が存在します。 | 変数が存在するかどうかにかかわらず、条件はtrueです。 |
存在しない | matchOperatorパラメーターの値は存在し、negateパラメーターの値はtrueです。 | |
任意のものを含める | matchOperatorパラメーターの値は含まれています。 | 条件は、変数が一致値のいずれかを含むか含まない場合に真です。 最大32個の一致値を指定できます。 次の一致モードがサポートされています。
|
除外する | matchOperatorパラメーターの値はcontainsで、negateパラメーターの値はtrueです。 | |
超 | matchOperatorパラメーターの値はgtです。 |
|
より小さい | matchOperatorパラメーターの値はltです。 |
|
以上 | matchOperatorパラメーターの値はgeです。 |
|
以下 | matchOperatorパラメーターの値はleです。 |
|
正規表現マッチ | matchOperatorパラメーターの値はregexです。 | 一致値として正規表現を入力できます。 説明 コンソールを使用するか、API操作を呼び出してルールを作成する場合、正規表現の一致や不一致など、正規表現関連の演算子は使用できません。 ただし、演算子を含む既存のルールを表示できます。 |
正規表現の不一致 | matchOperatorパラメーターの値はregexで、negateパラメーターの値はtrueです。 |
ワイルドカード
ワイルドカード | 説明 |
| 1文字を一致させることができます。 |
| 任意の文字を一致させることができる。 |
ルールを参照できる機能
機能 | 参考資料 |
基本設定 | |
キャッシュ設定 | |
Back-to-origin 設定 | |
アクセス制御の設定 | |
パフォーマンスの最適化 | |
ビデオ関連の設定 | |
トラフィック調整 |
手順
Alibaba Cloud CDNコンソール
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
[ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
左側のナビゲーションツリーで、[ルールエンジン] をクリックします。
ルールの追加 をクリックします。
ルールの追加 ページで、ルール名 および [ルールコンテンツ] パラメーターを設定します。
送信 をクリックします。