ルールエンジンのグラフィカルインターフェイスを使用して、リクエストパラメータに基づいた条件付きルールを定義し、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 | 条件一致式の論理演算子を指定します。有効な値は | はい |
条件 | criteria | 評価する条件式の配列を指定します。 | はい |
一致タイプ | MatchType | クライアントリクエスト 内の一致対象となる情報のタイプを指定します。 | はい |
一致オブジェクト | MatchObject | 一致タイプ をさらに絞り込みます。たとえば、クライアント IP アドレスは、POP 接続 IP または XFF IP として指定できます。 | いいえ |
一致演算子 | MatchOperator | 比較方法を指定します。 | はい |
一致値 | MatchValue | クライアントリクエスト のデータと比較する値を指定します。 | はい |
条件の否定 | negate | 条件式の結果を否定するかどうかを指定します。有効な値は true と false です。 | はい |
大文字と小文字の区別 | caseSensitive | 一致値の比較で大文字と小文字を区別するかどうかを指定します。 | いいえ |
ルール条件名 | name | ルール条件 の名前を指定します。 | はい |
ステータス | status | ルール条件 のステータス を指定します。 | はい |
条件式の設定
マッチタイプ | ドメイン名設定の機能 関数パラメーター | 説明 | 照合対象 | マッチ演算子 | マッチ値 | 大文字と小文字の区別 | Nginx 変数 |
プロトコル | scheme | クライアントリクエストで使用されるプロトコル (HTTP や HTTPS など) です。 | 該当なし |
|
| 該当なし | $scheme |
リクエストメソッド | method | クライアントリクエストで使用されるリクエストメソッド (GET や PUT など) です。 | 該当なし |
|
| 該当なし | $request_method |
URI (パス) | uri | クライアントリクエスト URL のパス部分です。リクエストパラメーターは除きます。例: | 該当なし |
| ワイルドカードの |
| $raw_uri or $uri |
ファイル名 | basename | クライアントがリクエストしたファイルの名前です。例: name1。 | 該当なし |
| ワイルドカードの |
| - |
拡張子 | extension | クライアントがリクエストしたファイルの拡張子です。システムは、最後のドット (.) からファイル名の終わりまでを拡張子として識別します。例: | 該当なし |
| ワイルドカードの |
| - |
ホスト名 | hostname | クライアントリクエストのホスト名です。一致順序:リクエスト URL 内のホスト > | 該当なし |
| クライアントリクエストのホストです。複数の値を入力できます。 |
| $host or $http_host |
クライアント IP アドレス | clientip | クライアントの IP アドレスです。IPv4 (例: |
説明 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 の詳細については、「IP アドレス検証モード」をご参照ください。 |
|
| 該当なし | - |
インターネットサービスプロバイダー (ISP) | geolocation | クライアント IP アドレスが属する ISP です。 |
説明 POP 接続 IP および XFF IP の詳細については、「IP アドレス検証モード」をご参照ください。 |
| ドロップダウンリストから ISP を選択するか、文字を入力してオプションを絞り込むことができます。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 | クライアントリクエスト内の | 該当なし |
| ドロップダウンリストから値を選択するか、 |
| $http_user_agent |
範囲バケット | range | 指定されたパーセンテージのクライアントリクエストに一致します。 | 該当なし |
| パーセンテージ値を入力します。 | 該当なし | - |
時間 | time | クライアントリクエストが発生した時間です。時間は UTC+08:00 です。例:09:10~14:22。 | 該当なし |
| 「09:10~14:22」のように時間範囲を入力します。この例は、09:10 から 14:22 までの期間を表します。 | 該当なし | - |
Nginx 変数 | ngxvar | 上記の変数が要件を満たさない場合は、Nginx 変数を使用します。使用できる変数の一覧については、Nginx の公式ドキュメントをご参照ください。 | ドロップダウンリストから変数を選択するか、変数名を入力できます。 |
| 複数の値を入力できます。 | 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-forrequest header is10.10.10.10,192.168.0.1.The real client IP address (the leftmost IP address in the
x-forwarded-forrequest header) is10.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)
演算子 | 条件関数のパラメーター | 説明 |
等しい |
| 変数が指定された一致する値と完全に等しいか、等しくない場合にのみ条件が満たされます。 |
等しくない |
| |
存在する |
| リクエストに指定された変数が存在するかどうかに応じて、条件が満たされます。 |
存在しない |
| |
いずれかを含む |
| 変数が指定された一致する値の いずれか を含む (またはいずれも含まない) 場合に条件が満たされます。最大 32 個の一致する値がサポートされています。 2 種類の包含マッチングがサポートされています:
|
いずれも含まない |
| |
より大きい |
| つまり、 |
より小さい |
| つまり、 |
以上 |
| つまり、 |
以下 |
| つまり、 |
正規表現一致 |
| 変数を正規表現と照合します。 説明 コンソールまたは OpenAPI を使用してルールを設定する場合、これらの正規表現演算子は使用できません。ただし、既存の設定を表示することはできます。正規表現関連のマッチ演算子を使用するには、チケットを送信するか、Edge Security Acceleration (ESA) を使用してください。 |
正規表現不一致 |
|
ワイルドカード
ワイルドカード | 説明 | パス マッチングの例 |
| 任意の 1 文字に一致します。 |
|
| パス区切り文字 (/) を含まない、0 文字以上の文字列に一致します。 |
|
ルール条件に対応する機能
|
機能カテゴリ |
機能名 |
|
オリジンフェッチ設定 |
|
|
オリジン HTTP リクエストヘッダー (新機能) |
|
|
オリジン HTTP レスポンスヘッダー |
|
|
キャッシュ設定 |
|
手順
- DCDNコンソールにログインします。
- 左側のナビゲーションペインで ドメイン名 をクリックします。
- [ドメイン名] ページで、管理するドメイン名を見つけ、[操作] 列の [設定] をクリックします。
-
左側のナビゲーションペインで、ルールエンジン をクリックします。
-
ルールの追加 をクリックします。
-
ルールの追加 ページで、ルール名 と ルール内容 を設定します。
-
送信 をクリックします。