すべてのプロダクト
Search
ドキュメントセンター

CDN:ルールエンジン

最終更新日:Feb 23, 2024

概要

ルールエンジンは、ルールの構成方法を簡素化するグラフィカルユーザーインターフェイスを提供します。 ルールを設定して、リクエストに含まれるパラメーターに基づいてユーザーリクエストを識別できます。 これは、設定がリクエストに適用されるかどうかを判断するのに役立ち、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

  • 等しい

  • 等しくない

  • http

  • https

N/A

$スキーム

リクエストメソッド

method

GETやPUTなどのリクエストメソッド。

N/A

  • 等しい

  • 等しくない

  • get

  • put

  • ポスト

  • delete

  • ヘッド

N/A

$request_method

URI

ウリ

リクエストURLのパス (リクエストパラメーターを除く) 。 例: /favicon.ico

N/A

  • 任意のものを含める

  • 除外する

疑問符 (?) とアスタリスク (*) のワイルドカードがサポートされています。 たとえば、/*/my_path/* は有効な式です。 各式に複数の値を指定できます。

  • 大文字と小文字を区別する

  • 大文字と小文字を区別しない

$raw_uriまたは $uri

ファイル名

basename

クライアントによって要求されたファイルの名前。 例: name1。

N/A

  • 任意のものを含める

  • 除外する

疑問符 (?) とアスタリスク (*) のワイルドカードがサポートされています。 各式に複数の値を指定できます。

  • 大文字と小文字を区別する

  • 大文字と小文字を区別しない

-

ファイル名拡張子

エクステンション

クライアントによって要求されたファイルのサフィックス。最後のピリオド (.) から始まります。たとえば、。mp4

N/A

  • 任意のものを含める

  • 除外する

疑問符 (?) とアスタリスク (*) のワイルドカードがサポートされています。 各式に複数の値を指定できます。

  • 大文字と小文字を区別する

  • 大文字と小文字を区別しない

-

ホスト名

hostname

リクエストに含まれるホスト名。 一致する優先度: リクエストURLのホスト> リクエストのhostヘッダーのホスト。

N/A

  • 任意のものを含める

  • 除外する

リクエストのホスト。 複数の値を指定できます。

  • 大文字と小文字を区別する

  • 大文字と小文字を区別しない

$hostまたは $http_host

クライアント IP アドレス

clientip

クライアントの IP アドレス。 1.1.X.XなどのIPv4アドレス、240e:95c:3004:2:3:0:0:XXXなどのIPv6アドレス、および20.209.XXX.XXX/31などのCIDRブロックがサポートされる。

  • POPへの接続に使用されるIPアドレス

  • XFF 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への接続に使用されるIPアドレス

  • XFF IP

説明

POPおよびXFF IPアドレスへの接続に使用されるIPアドレスについては、「IPアドレス検証モード」をご参照ください。

  • 等しい

  • 等しくない

  • v4

  • v6

N/A

-

インターネットサービスプロバイダー (ISP)

ジオロケーション

クライアントのIPアドレスが属するISP。

  • POPへの接続に使用されるIPアドレス

  • XFF IP

説明

POPおよびXFF IPアドレスへの接続に使用されるIPアドレスについては、「IPアドレス検証モード」をご参照ください。

  • 任意のものを含める

  • 除外する

ドロップダウンリストから値を選択するか、文字を入力してオプションをフィルタリングできます。 IDまたは名前によるあいまい一致がサポートされています。 複数の値を指定できます。

N/A

$ip_isp_id

IPの場所

ジオロケーション

クライアントIPアドレスの地理的な場所。

  • POPへの接続に使用されるIPアドレス

  • XFF 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

  • 任意のものを含める

  • 除外する

ドロップダウンリストから値を選択するか、* Chrome/25* などのUser-Agent値を入力できます。 疑問符 (?) とアスタリスク (*) のワイルドカードがサポートされています。 各式に複数の値を指定できます。

  • 大文字と小文字を区別する

  • 大文字と小文字を区別しない

$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変数を使用できます。 詳細については、「変数のアルファベットインデックス」をご参照ください。

ドロップダウンリストから変数を選択するか、$region:$isp形式で変数名を入力します。

  • 存在する

  • 存在しない

  • 任意のものを含める

  • 除外する

  • 以上

  • より小さい

  • 以下

複数の値を指定できます。

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個の一致値を指定できます。

次の一致モードがサポートされています。

  • 完全一致: 一致オブジェクトを入力します。 例えば、一致値が「a」である場合、一致オブジェクトが「a」である場合にのみ、条件は真である。

  • ワイルドカード一致: ワイルドカード文字としてアスタリスク (*) を追加できます。 例えば、a ** a、および * a * は、それぞれabc、bca、およびbcabcに対応することができる。

除外する

matchOperatorパラメーターの値はcontainsで、negateパラメーターの値はtrueです。

matchOperatorパラメーターの値はgtです。

>

より小さい

matchOperatorパラメーターの値はltです。

<

以上

matchOperatorパラメーターの値はgeです。

>=

以下

matchOperatorパラメーターの値はleです。

<=

正規表現マッチ

matchOperatorパラメーターの値はregexです。

一致値として正規表現を入力できます。

説明

コンソールを使用するか、API操作を呼び出してルールを作成する場合、正規表現の一致や不一致など、正規表現関連の演算子は使用できません。 ただし、演算子を含む既存のルールを表示できます。

正規表現の不一致

matchOperatorパラメーターの値はregexで、negateパラメーターの値はtrueです。

ワイルドカード

ワイルドカード

説明

?

1文字を一致させることができます。

*

任意の文字を一致させることができる。

ルールを参照できる機能

機能

参考資料

基本設定

条件付き配信元の設定

キャッシュ設定

リソースのキャッシュルールの作成

HTTPレスポンスヘッダーの設定

アクセス URL 書き換えルールの作成

Back-to-origin 設定

HTTPリクエストヘッダーの設定

HTTP レスポンスヘッダーの設定

パラメーターの書き換え

アクセス制御の設定

ホットリンク保護を有効にするリファラーホワイトリストまたはブラックリストの設定

URL署名の設定

IPブラックリストまたはホワイトリストの設定

User-Agent のブラックリストまたはホワイトリストの設定

パフォーマンスの最適化

パラメーターを無視

ビデオ関連の設定

範囲オリジンフェッチの設定

トラフィック調整

個々のリクエストに対するトラフィックスロットリングの設定

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

  3. [ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。

  4. 左側のナビゲーションツリーで、[ルールエンジン] をクリックします。

  5. ルールの追加 をクリックします。

  6. ルールの追加 ページで、ルール名 および [ルールコンテンツ] パラメーターを設定します。

  7. 送信 をクリックします。