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

Edge Security Acceleration:DCDN ルールエンジン

最終更新日:Aug 26, 2026

ルールエンジンのグラフィカルインターフェイスを使用して、リクエストパラメータに基づいた条件付きルールを定義し、DCDN 設定ポリシーが有効になるタイミングを正確に制御します。

説明

注意:この機能がルールエンジンのルール条件を参照する場合、実行順序は、この機能自体の設定の優先順位ではなく、ルールエンジンで設定されたルール条件の優先順位に従います。

背景

Alibaba Cloud /DCDN コンソールは、Time-to-Live (TTL) の設定やオリジンフェッチパラメータの書き換えなどの基本機能を提供します。これらの機能はほとんどのユースケースをカバーしますが、すべての要件に対応できるわけではありません。たとえば、パス /example を含むリクエストを特定のオリジンにルーティングが必要となる場合があります。このようなシナリオでは、基本機能とルールエンジンを組み合わせることで、より柔軟な設定が可能になります。Alibaba Cloud /DCDN は、高度なカスタマイズのために EdgeRoutine も提供しています。

設定機能

基本機能

基本機能 + ルールエンジン

EdgeRoutine

実装方法

汎用的な設定

柔軟なカスタム設定

非常に柔軟なカスタム設定

シナリオ

一般的なユースケース

高度なカスタム要件

完全なカスタマイズ要件

難易度

低

中

高

設定の柔軟性

低

中

高

制限

  • ドメイン名あたり、最大 50 件のルール条件を作成できます。

  • 各ルール条件には、最大 20 件のサブルールを含めることができます。

  • コンソールでルール条件を設定する場合、または OpenAPI を使用する場合、「正規表現一致」または「正規表現不一致」の演算子は使用できません。ただし、これらの演算子を使用している既存の設定は表示できます。これらの演算子を使用するには、ESA を使用してください。

  • 1 つのドメイン名内のすべての機能において、1 つのルール条件はデフォルトで 5 回参照できます。

  • ルール条件は最大 3 階層までネストでき、各階層で独立した論理関係を設定できます。

  • キャッシュの有効期限の設定や送信リクエストヘッダーの変更などの機能がルール条件を参照する場合、実行順序は機能の設定順ではなく、条件の優先度によって決まります。

  • 前述の制限のうち、ルール条件 50 件、サブルール 20 件、ネスト 3 階層の上限は、リクエストしても引き上げられないハードリミットです。1 つの高速化ドメイン名内のすべての機能におけるルール条件の参照回数の合計上限は、デフォルトで 5 回ですが、リクエストにより引き上げることができます。

    • 1 つの高速化ドメイン名におけるルール条件の参照回数の合計上限を引き上げるには、チケットを送信し、次の情報を提供してください:上限を引き上げたい高速化ドメイン名、参照回数の目標値、ビジネスシナリオの説明。

    • 後から別の高速化ドメイン名を追加する場合、そのドメイン名についても参照回数を引き上げるために、別途チケットを送信する必要があります。手順は初回のリクエストと同じです。

    • この上限を自動的に引き上げる仕組みはありません。チケットを送信した後、リクエストはバックエンドチームによる手動レビューで処理されます。

  • 各条件では、クライアント IP、URI、ファイル拡張子、ファイル名、User-Agent などの一致タイプに対して、最大 32 件の一致値を設定できます。クライアント IP の許可リストが大きい場合は、一致値のクォータを節約するために、複数の IP アドレスを CIDR ブロック (例:120.209.XXX.X/24) にまとめてください。

  • User-Agent の一致値は最大 32 件まで設定できます。この上限を超える値は無視されます。多数の User-Agent を一致させるには、ワイルドカード (*) を使用して類似する値をまとめる (例:*Chrome*) は Chrome ブラウザーのすべてのバージョンに一致します) か、より柔軟なマッチングロジックのために EdgeScript を使用してください。

ルール条件の構文

ルール条件とは、論理演算子を使用して 1 つ以上の条件式を組み合わせたものです。以降のセクションでは、構文について説明します。

論理演算子

論理演算子は、ネストされた条件セットを含め、同じレベルの条件を評価します。サポートされている演算子は and と or です。

  • and :論理 AND 演算子。すべての条件が true の場合にのみ、一致します。

  • or :論理 OR 演算子。少なくとも 1 つの条件が true の場合に一致します。たとえば、異なる状況下でヘッダーを追加するために、同じレスポンスヘッダーに対して複数のルール条件を構成できます。例: URI に /path-a が含まれている[または] URI に /path-b が含まれている場合、システムはレスポンスヘッダーを追加します。

条件式のパラメーター

ルール の最小単位である条件式には、次のパラメーターが含まれます。

パラメーター

ドメイン名設定機能 関数パラメーター

説明

必須

条件一致

match

条件一致式を指定します。

はい

論理演算子

logic

条件一致式の論理演算子を指定します。有効な値はandとorです。

はい

条件

criteria

評価する条件式の配列を指定します。

はい

一致タイプ

MatchType

クライアントリクエスト 内の一致対象となる情報のタイプを指定します。

はい

一致オブジェクト

MatchObject

一致タイプ をさらに絞り込みます。たとえば、クライアント IP アドレスは、POP 接続 IP または XFF IP として指定できます。

いいえ

一致演算子

MatchOperator

比較方法を指定します。

はい

一致値

MatchValue

クライアントリクエスト のデータと比較する値を指定します。

はい

条件の否定

negate

条件式の結果を否定するかどうかを指定します。有効な値は true と false です。

はい

大文字と小文字の区別

caseSensitive

一致値の比較で大文字と小文字を区別するかどうかを指定します。

いいえ

ルール条件名

name

ルール条件 の名前を指定します。

はい

ステータス

status

ルール条件 のステータス を指定します。

はい

条件式の設定

マッチタイプ

ドメイン名設定の機能 関数パラメーター

説明

照合対象

マッチ演算子

マッチ値

大文字と小文字の区別

Nginx 変数

プロトコル

scheme

クライアントリクエストで使用されるプロトコル (HTTP や HTTPS など) です。

該当なし

  • 次と等しい

  • 次と等しくない

  • http

  • https

該当なし

$scheme

リクエストメソッド

method

クライアントリクエストで使用されるリクエストメソッド (GET や PUT など) です。

該当なし

  • 次と等しい

  • 次と等しくない

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

該当なし

$request_method

URI (パス)

uri

クライアントリクエスト URL のパス部分です。リクエストパラメーターは除きます。例: /favicon.ico。

該当なし

  • いずれかを含む

  • いずれも含まない

ワイルドカードの ? と * が使用できます。例: /*/my_path/* と入力します。複数の値を指定できます。

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

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

$raw_uri or $uri

ファイル名

basename

クライアントがリクエストしたファイルの名前です。例: name1。

該当なし

  • いずれかを含む

  • いずれも含まない

ワイルドカードの ? と * が使用できます。複数の値を入力できます。

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

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

-

拡張子

extension

クライアントがリクエストしたファイルの拡張子です。システムは、最後のドット (.) からファイル名の終わりまでを拡張子として識別します。例: .mp4。

該当なし

  • いずれかを含む

  • いずれも含まない

ワイルドカードの ? と * が使用できます。複数の値を入力できます。

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

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

-

ホスト名

hostname

クライアントリクエストのホスト名です。一致順序:リクエスト URL 内のホスト > Host リクエストヘッダー内のホスト。

該当なし

  • いずれかを含む

  • いずれも含まない

クライアントリクエストのホストです。複数の値を入力できます。

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

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

$host or $http_host

クライアント IP アドレス

clientip

クライアントの IP アドレスです。IPv4 (例: 1.1.X.X)、IPv6 (例: 240e:XXX:3004:2:3:0:0:3f7)、および CIDR ブロック (例: 120.209.XXX.XXX/31) に対応しています。

  • POP 接続 IP

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

クライアントアドレスの IP バージョンです (IPv4 または IPv6)。

  • POP 接続 IP

  • XFF IP

説明

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

  • 次と等しい

  • 次と等しくない

  • v4

  • v6

該当なし

-

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

geolocation

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

  • POP 接続 IP

  • XFF IP

説明

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

  • いずれかを含む

  • いずれも含まない

ドロップダウンリストから ISP を選択するか、文字を入力してオプションを絞り込むことができます。ID または名前によるあいまい検索が可能です。複数の値を入力できます。

該当なし

$ip_isp_id

IP ジオロケーション

geolocation

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

  • POP 接続 IP

  • XFF 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 ヘッダーです。

該当なし

  • いずれかを含む

  • いずれも含まない

ドロップダウンリストから値を選択するか、*Chrome/25* などの User-Agent 値を入力できます。ワイルドカードの ? と * が使用できます。複数の値を入力できます。最大 32 個の User-Agent 値を設定できます。この制限を超えた場合、設定は有効になりません。

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

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

$http_user_agent

範囲バケット

range

指定されたパーセンテージのクライアントリクエストに一致します。

該当なし

  • 次と等しい

  • 次と等しくない

パーセンテージ値を入力します。

該当なし

-

時間

time

クライアントリクエストが発生した時間です。時間は UTC+08:00 です。例:09:10~14:22。

該当なし

  • いずれかを含む

  • いずれも含まない

「09:10~14:22」のように時間範囲を入力します。この例は、09:10 から 14:22 までの期間を表します。

該当なし

-

Nginx 変数

ngxvar

上記の変数が要件を満たさない場合は、Nginx 変数を使用します。使用できる変数の一覧については、Nginx の公式ドキュメントをご参照ください。

ドロップダウンリストから変数を選択するか、変数名を入力できます。$region:$isp のような連結が可能です。

  • 存在する

  • 存在しない

  • いずれかを含む

  • いずれも含まない

  • 次より大きい

  • 次以上

  • 次より小さい

  • 次以下

複数の値を入力できます。

Not applicable

${name}

条件式の一般的な設定に関する注意事項

  • URI (パス) の一致開始点:URI 照合では、照合する値はドメイン名の後の最初の / から始まるパス部分です。値にはドメイン名やリクエストパラメーターは含まれません。リクエスト https://example.com/path/file.html?key=value の場合、照合する値は /path/file.html です。照合値は / で始まる必要があります。

  • 拡張子の一致形式:拡張子で照合する場合、照合値にはドット (.) を含める必要があります。たとえば、.txt ファイルに一致させるには、txt ではなく .txt と入力します。そうしないと、照合が失敗する可能性があります。

  • ワイルドカードの使用例:URI と拡張子の照合では、ワイルドカードの ? (1 文字に一致) と * (0 文字以上に一致) を使用できます。一般的な例は次のとおりです。

    • /*.pdf:ルートディレクトリ内のすべての PDF ファイルに一致します。

    • /api/*/data:/api/ 配下の任意のサブディレクトリにある data パスに一致します。

    • .??:.js や .ts など、すべての 2 文字の拡張子に一致します。

IP アドレス検証モード

ルールエンジンは、2 つの IP アドレス検証モードを提供しています。選択したモードは、 または DCDN ノードがクライアント IP アドレスを識別する方法に影響します。

  • POP 接続 IP: このモードは、クライアントが または DCDN ノードへの接続に使用する IP アドレスと照合します。クライアントと または DCDN ノードの間にプロキシサーバーが使用されている場合、POP 接続 IP はプロキシサーバーの IP アドレスになります。

  • XFF IP: このモードは、x-forwarded-for リクエストヘッダー内の最も左側の IP アドレスと照合します。XFF IP は、クライアントと または DCDN ノードの間にプロキシサーバーが使用されているかにかかわらず、常にクライアントの実際の IP アドレスです。

検証モードの選択は、クライアントリクエストが または DCDN ノードに到達する前にプロキシサーバーを経由するかどうかによって決まります。

なお、 または DCDN ノード上で機能が有効になる場所も、IP アドレス検証モードに影響します。L2 ノードで有効になるオリジン設定に関連する機能の場合、リクエストが通過する L1 ノードは中間プロキシサーバーとみなされます。

例: 実際のクライアント IP アドレスが 10.10.10.10 で、プロキシサーバーの IP アドレスが 192.168.0.1 であると仮定します。

  • プロキシサーバーなしの場合:

    • x-forwarded-for リクエストヘッダーの値は 10.10.10.10 です。

    • クライアントの実際の IP アドレス (x-forwarded-for リクエストヘッダーの左端の IP) = クライアントと DCDN ノード間の接続確立に使用される IP アドレス = 10.10.10.10。

  • With a proxy server:

    • The value of the x-forwarded-for request header is 10.10.10.10,192.168.0.1.

    • The real client IP address (the leftmost IP address in the x-forwarded-for request header) is 10.10.10.10.

    • Client-to-DCDN node connection IP = Proxy server IP = 192.168.0.1.

    • The real client IP address (the first IP address from the left in the x-forwarded-for request header) ≠ the IP address of the client connection to the DCDN node.

説明

Some internet service providers (ISPs) in specific regions may assign private IP addresses to end-users. As a result, nodes may receive a user's private IP address.

Private IP addresses fall into three ranges:

  • Class A private IP address: 10.0.0.0 to 10.255.255.255, subnet mask: 10.0.0.0/8

  • Class B private IP address: 172.16.0.0 to 172.31.255.255, subnet mask: 172.16.0.0/12

  • Class C private IP address: 192.168.0.0 to 192.168.255.255, subnet mask: 192.168.0.0/16

マッチ演算子 (matchOperator)

演算子

条件関数のパラメーター

説明

等しい

matchOperator を equals に設定します。

変数が指定された一致する値と完全に等しいか、等しくない場合にのみ条件が満たされます。

等しくない

matchOperator を equals に設定し、negate パラメーターを true に設定します。

存在する

matchOperator を exists に設定します。

リクエストに指定された変数が存在するかどうかに応じて、条件が満たされます。

存在しない

matchOperator を exists に設定し、negate パラメーターを true に設定します。

いずれかを含む

matchOperator を contains に設定します。

変数が指定された一致する値の いずれか を含む (またはいずれも含まない) 場合に条件が満たされます。最大 32 個の一致する値がサポートされています。

2 種類の包含マッチングがサポートされています:

  • 完全一致: 変数は指定された値と完全に一致しなければなりません。たとえば、値が a の場合、変数も a でなければなりません。

  • ワイルドカード一致: * をワイルドカードとして使用できます。 サポートされているパターンには a*、*a、および *a* があります。 これらはそれぞれ abc、bca、bcabc に一致します。

いずれも含まない

matchOperator を contains に設定し、negate パラメーターを true に設定します。

より大きい

matchOperator を gt に設定します。

つまり、>

より小さい

matchOperator を lt に設定します。

つまり、<

以上

matchOperator を ge に設定します。

つまり、>=

以下

matchOperator を le に設定します。

つまり、<=

正規表現一致

matchOperator を regex に設定します。

変数を正規表現と照合します。

説明

コンソールまたは OpenAPI を使用してルールを設定する場合、これらの正規表現演算子は使用できません。ただし、既存の設定を表示することはできます。正規表現関連のマッチ演算子を使用するには、チケットを送信するか、Edge Security Acceleration (ESA) を使用してください。

正規表現不一致

matchOperator を regex に設定し、negate パラメーターを true に設定します。

ワイルドカード

ワイルドカード

説明

パス マッチングの例

?

任意の 1 文字に一致します。

/img/?.png は、/img/a.png や /img/b.png など、ファイル名が 1 文字のリソースに一致します。

*

パス区切り文字 (/) を含まない、0 文字以上の文字列に一致します。

/api/* は、/api/v1/users や /api/v2/products など、/api/ 配下のすべてのパスに一致します。/static/*.css は、/static/ ディレクトリ内のすべての CSS ファイルに一致します。

ルール条件に対応する機能

機能カテゴリ

機能名

オリジンフェッチ設定

オリジンホストの指定

受信リクエストヘッダーの変更

オリジン HTTP リクエストヘッダー (新機能)

オリジン HTTP レスポンスヘッダー

キャッシュ設定

Time-to-Live の設定

送信レスポンスヘッダーの変更

カスタムキャッシュキー

手順

  1. DCDNコンソールにログインします。
  2. 左側のナビゲーションペインで ドメイン名 をクリックします。
  3. [ドメイン名] ページで、管理するドメイン名を見つけ、[操作] 列の [設定] をクリックします。
  4. 左側のナビゲーションペインで、ルールエンジン をクリックします。

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

  6. ルールの追加 ページで、ルール名 と ルール内容 を設定します。

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