更新域名的规则引擎配置。
注意
规则引擎配置的更新方式是全量覆盖更新。在更新规则引擎配置时,如果 Rules 未包含某条现有规则的配置,该规则会在 API 调用时被删除。同样,如果一条规则中的某个已有配置没有被指定,则该配置也会被移除。您可以调用 DescribeCdnConfig 获取当前所有规则的配置。
节流限制:您每秒最多可以提交 20 个 API 请求。
参数名称 | 数据类型 | 是否必选 | 参数说明 |
|---|---|---|---|
Action | String | 是 | 接口名称。当前 API 的名称为 UpdateCdnConfig。 |
Version | String | 是 | 接口版本。当前 API 的版本为 2021-03-01。 |
参数名称 | 数据类型 | 是否必选 | 参数说明 | 示例 |
|---|---|---|---|---|
Domain | String | 是 | 表示需要配置的域名。 | www.example.com |
RuleEngine | Object | 否 | 表示规则引擎的配置。 |
| 行为(Action) | 配置参数 | 示例 |
|---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
Type A 配置参数
Type B 配置参数
Type C 配置参数
Type D 配置参数
Type E 配置参数
|
| 行为(Action) | 配置参数 | 示例 |
|---|---|---|
|
| |
|
| |
|
| |
|
|
| 行为(Action) | 配置参数 | 配置参数 |
|---|---|---|
|
| |
|
当
| |
|
| |
|
|
| 行为(Action) | 配置参数 | 示例 |
|---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
| 匹配对象 | IgnoreCase | 可指定的 Operator | Name 输入要求 | Value 输入要求 | 示例值 |
|---|---|---|---|---|---|
always | 不适用 | 不适用 | 不适用 | 不适用 | |
| 适用 |
| 不适用 |
|
|
|
|
| |||
|
|
| |||
|
|
| |||
path_and_param | 适用 | 与 path 相同 | 不适用 | 与 path 相同。 | |
| 适用 |
| 不适用 |
|
|
|
|
| |||
|
|
| |||
|
|
| |||
| 适用 |
| 不适用 |
|
|
exist not_exist | 不适用 | ||||
|
|
| |||
| 不适用 |
| 不适用 |
|
|
http_origin | 适用 | 与 http_referer 相同。 | 不适用 | 与 http_referer 相同。 | |
| 适用 | 与 | 不适用 | 与 | |
| 适用 | 与 |
| 与 | Name Value |
| 不适用 |
| 不适用 |
|
|
| 不适用 |
| 不适用 |
|
|
| 不适用 |
|
|
|
|
period:某个任意时间段。 | 开始时间和结束时间精确到秒。 | ["2025-05-07 14:21:21", "2025-06-13 14:21:24"] | |||
everyday:一天中的某个时间段。 | ["02:02:02","06:04:04"] | ||||
protocol | 不适用 | equal not_equal | 不适用 | 指定 http 或者 https。 | ["http"] |
client_cert_info | 适用 | match not_match | common_name:证书主题中的通用名称(Common Name)。 | 总数不能超过 100 个,每个长度不能超过 64 个字符,支持以通配符 * 开头和结尾。 | ["www.example.com"] |
serial_number:证书序列号。 | ["03A7F2C91B4E6D8A"] | ||||
country_name:证书主体所属国家或地区的代码。 | ["CN"] | ||||
locality_name:证书主体所在的城市或地区。 | ["Beijing"] | ||||
organization_name:证书主体所属组织或公司名称。 | ["Example Co., Ltd."] | ||||
organizational_unit_name:证书主体所属的组织单位或部门名称。 | ["IT Department"] | ||||
| 适用 | 与 |
| 与 | Name Value |
| 不适用 |
| 不适用 |
|
|
由于该 API 没有响应参数,响应正文只有包含请求元数据的 ResponseMetadata 结构体,没有 Result 结构体。
POST https://cdn.volcengineapi.com/?Action=UpdateCdnConfig&Version=2021-03-01 { "Domain": "www.example.com", "RuleEngine": { "Switch": true, "Rules": [ { "Id": "rule-f3c165", "Name": "Rule 1", "Rule": "{\"IfBlock\":{\"SubRules\":[],\"Actions\":[{\"Action\":\"origin_tcp_timeout\",\"Stage\":\"origin_request\",\"Phase\":2,\"Module\":2,\"Groups\":[{\"Dimension\":\"origin_tcp_timeout\",\"GroupParameters\":[{\"Parameters\":[{\"Name\":\"connect_timeout\",\"Values\":[\"30\"]},{\"Name\":\"connect_timeout_unit\",\"Values\":[\"sec\"]}]}]}]}],\"Condition\":{\"IsGroup\":true,\"Connective\":\"and\",\"ConditionGroups\":[{\"IsGroup\":true,\"Connective\":\"and\",\"ConditionGroups\":[{\"IsGroup\":false,\"Condition\":{\"Object\":\"always\"}}]}]}}}", "Switch": true } ] } }
本示例重点展示 Condition 的配置。
说明
要调用本示例,请先处理 Rule 结构体中的参数配置。参见 Rule 参数的说明。
POST https://cdn.volcengineapi.com/?Action=UpdateCdnConfig&Version=2021-03-01 { "Domain": "www.example.com", "RuleEngine": { "Switch": true, "Rules": [ { "Id": "rule-f3c165", "Name": "Rule 1", "Switch": true, "Rule": [ { "Desc": "myDesc", "IfBlock": { "SubRules": [ { "Desc": "Sub-rule1", "IfBlock": { "SubRules": [], "Actions": [ { "Action": "response_header", "Stage": "client_response", "Phase": 6, "Module": 1, "Groups": [ { "Dimension": "response_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "set" ] }, { "Name": "header_name", "Values": [ "myheader2" ] }, { "Name": "header_value", "Values": [ "myheadervalue" ] } ] } ] } ] } ], "Condition": { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Condition": { "Object": "always" } }, { "IsGroup": false, "Condition": { "Object": "path", "Operator": "suffix_match", "IgnoreCase": true, "Value": [ "param=value" ] } } ] } ] } }, "ElseBlock": { "SubRules": [], "Actions": [ { "Action": "response_header", "Stage": "client_response", "Phase": 6, "Module": 1, "Groups": [ { "Dimension": "response_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "delete" ] }, { "Name": "header_name", "Values": [ "myheader3" ] } ] } ] } ] } ] } } ], "Actions": [ { "Action": "response_header", "Stage": "client_response", "Phase": 6, "Module": 1, "Groups": [ { "Dimension": "response_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "set" ] }, { "Name": "header_name", "Values": [ "myheader" ] }, { "Name": "header_value", "Values": [ "myheadervalue" ] } ] }, { "Parameters": [ { "Name": "action", "Values": [ "delete" ] }, { "Name": "header_name", "Values": [ "myheader1" ] } ] } ] } ] } ], "Condition": { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Condition": { "Object": "always" } }, { "IsGroup": false, "Condition": { "Object": "path", "Operator": "suffix_match", "IgnoreCase": true, "Value": [ "jpg", "png" ] } }, { "IsGroup": false, "Condition": { "Object": "path_and_param", "Operator": "prefix_match", "IgnoreCase": true, "Value": [ "/docs1/", "/docs2/" ] } }, { "IsGroup": false, "Condition": { "Object": "url", "Operator": "equal", "IgnoreCase": true, "Value": [ "https://www.example.com/abc/file" ] } }, { "IsGroup": false, "Condition": { "Object": "query_string", "Name": "myparam", "Operator": "equal", "IgnoreCase": true, "Value": [ "myvalue", "myvalue2" ] } } ] }, { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Condition": { "Object": "http_referer", "Operator": "not_equal", "IgnoreCase": true, "Value": [ "myreferer1", "myreferere2" ] } }, { "IsGroup": false, "Condition": { "Object": "client_ip", "Operator": "match", "Value": [ "203.0.113.8", "203.0.113.9" ] } }, { "IsGroup": false, "Condition": { "Object": "http_origin", "Operator": "exist" } }, { "IsGroup": false, "Condition": { "Object": "http_ua", "Operator": "not_exist" } }, { "IsGroup": false, "Condition": { "Object": "request_header", "Name": "myhttpheader", "Operator": "equal", "IgnoreCase": true, "Value": [ "abc", "cde" ] } } ] }, { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Condition": { "Object": "client_area", "Operator": "not_match", "Value": [ "PNG", "FSM" ] } }, { "IsGroup": false, "Condition": { "Object": "http_method", "Operator": "equal", "Value": [ "post", "head", "get", "put", "options", "delete", "connect", "patch" ] } }, { "IsGroup": false, "Condition": { "Object": "request_time", "Name": "everyday", "Operator": "match", "TimeZone": "+0800", "Value": [ "02:02:02", "06:04:04" ] } }, { "IsGroup": false, "Condition": { "Object": "request_time", "Name": "weekday", "Operator": "not_match", "TimeZone": "+0800", "Value": [ "mon", "tue", "wed", "thur", "fri", "sat", "sun" ] } }, { "IsGroup": false, "Condition": { "Object": "request_time", "Name": "period", "Operator": "not_match", "TimeZone": "+0800", "Value": [ "2025-05-07 14:21:21", "2025-06-13 14:21:24" ] } } ] }, { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Condition": { "Object": "protocol", "Operator": "equal", "Value": [ "http" ] } }, { "IsGroup": false, "Condition": { "Object": "response_header", "Name": "myresponseheader", "Operator": "not_equal", "IgnoreCase": true, "Value": [ "resheader1", "resheader2" ] } }, { "IsGroup": false, "Condition": { "Object": "http_code", "Operator": "match", "Value": [ "400", "500" ] } }, { "IsGroup": false, "Condition": { "Object": "path", "Operator": "prefix_not_match", "IgnoreCase": true, "Value": [ "/abc/" ] } }, { "IsGroup": false, "Condition": { "Object": "path", "Operator": "suffix_not_match", "IgnoreCase": true, "Value": [ "/def/" ] } } ] } ] } }, "ElseBlock": { "SubRules": [ { "Desc": "SubRule1", "IfBlock": { "SubRules": [], "Actions": [ { "Action": "response_header", "Stage": "client_response", "Phase": 6, "Module": 1, "Groups": [ { "Dimension": "response_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "set" ] }, { "Name": "header_name", "Values": [ "myheader6" ] }, { "Name": "header_value", "Values": [ "1111" ] } ] } ] } ] } ], "Condition": { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Condition": { "Object": "http_referer", "Operator": "exist" } } ] } ] } }, "ElseBlock": { "SubRules": [], "Actions": [ { "Action": "response_header", "Stage": "client_response", "Phase": 6, "Module": 1, "Groups": [ { "Dimension": "response_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "delete" ] }, { "Name": "header_name", "Values": [ "myheader7" ] } ] } ] } ] } ] } } ], "Actions": [ { "Action": "response_header", "Stage": "client_response", "Phase": 6, "Module": 1, "Groups": [ { "Dimension": "response_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "delete" ] }, { "Name": "header_name", "Values": [ "MyHeader" ] } ] } ] } ] } ] } } ] } ] } }
本示例重点展示 Action 的配置。
说明
要调用本示例,请先处理 Rule 结构体中的参数配置。参见 Rule 参数的说明。
POST https://cdn.volcengineapi.com/?Action=UpdateCdnConfig&Version=2021-03-01 { "Domain": "www.example.com", "RuleEngine": { "Switch": true, "Rules": [ { "Id": "rule-2e6975", "Name": "My Rule", "Switch": true, "Rule": [ { "Desc": "myDesc", "IfBlock": { "Condition": { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": true, "Connective": "and", "ConditionGroups": [ { "IsGroup": false, "Connective": "and", "Condition": { "Object": "always" } } ] } ] }, "Actions": [ { "Action": "redirect_request", "Stage": "client_request", "Phase": 1, "Module": 1, "Groups": [ { "Dimension": "redirect_request", "GroupParameters": [ { "Parameters": [ { "Name": "source_path", "Values": [ "^/docs/file1$" ] }, { "Name": "status_code", "Values": [ "301" ] }, { "Name": "protocol", "Values": [ "follow_client" ] }, { "Name": "target_host", "Values": [ "www.example.com" ] }, { "Name": "target_path", "Values": [ "^/cos1/file2$" ] }, { "Name": "target_query_action", "Values": [ "include_all" ] } ] } ] } ] }, { "Action": "allow_access", "Stage": "client_request", "Phase": 1, "Module": 1, "Groups": [ { "Dimension": "allow_access", "GroupParameters": [ { "Parameters": [ { "Name": "effective_scope", "Values": [ "rule_engine", "method_denied_rule", "area_access_rule", "request_block_rule" ] } ] } ] } ] }, { "Action": "download_speed_limit", "Stage": "client_request", "Phase": 1, "Module": 1, "Groups": [ { "Dimension": "download_speed_limit", "GroupParameters": [ { "Parameters": [ { "Name": "rate", "Values": [ "100" ] }, { "Name": "rate_unit", "Values": [ "B/s" ] }, { "Name": "after_size", "Values": [ "15" ] }, { "Name": "after_size_unit", "Values": [ "MB" ] } ] } ] } ] }, { "Action": "request_header", "Stage": "client_request", "Phase": 1, "Module": 1, "Groups": [ { "Dimension": "request_header", "GroupParameters": [ { "Parameters": [ { "Name": "action", "Values": [ "set" ] }, { "Name": "header_name", "Values": [ "myheader" ] }, { "Name": "header_value", "Values": [ "myvalue" ] } ] }, { "Parameters": [ { "Name": "action", "Values": [ "delete" ] }, { "Name": "header_name", "Values": [ "myheader" ] } ] } ] } ] }, { "Action": "deny_access", "Stage": "client_request", "Phase": 1, "Module": 1, "Groups": [ { "Dimension": "deny_access", "GroupParameters": [ { "Parameters": [ { "Name": "status_code", "Values": [ "465" ] } ] } ] } ] }, { "Action": "cache_key", "Stage": "cache", "Phase": 5, "Module": 3, "Groups": [ { "Dimension": "query_string", "GroupParameters": [ { "Parameters": [ { "Name": "query_action", "Values": [ "exclude_part" ] }, { "Name": "query_names", "Values": [ "myparam1", "myparam2" ] }, { "Name": "ignore_case", "Values": [ "true" ] } ] } ] }, { "Dimension": "request_header", "GroupParameters": [ { "Parameters": [ { "Name": "header_names", "Values": [ "myheader", "myheader2" ] }, { "Name": "ignore_case", "Values": [ "true" ] } ] } ] }, { "Dimension": "request_path", "GroupParameters": [ { "Parameters": [ { "Name": "source_path", "Values": [ "^/path1/$" ] }, { "Name": "target_path", "Values": [ "^/path2/$" ] } ] } ] }, { "Dimension": "path_ignore_case", "GroupParameters": [ { "Parameters": [ { "Name": "ignore_case", "Values": [ "true" ] } ] } ] } ] }, { "Action": "compression", "Stage": "cache", "Phase": 5, "Module": 2, "Groups": [ { "Dimension": "compression", "GroupParameters": [ { "Parameters": [ { "Name": "methods", "Values": [ "gzip", "brotli" ] }, { "Name": "min_file_size", "Values": [ "563" ] }, { "Name": "min_file_size_unit", "Values": [ "KB" ] }, { "Name": "format", "Values": [ "default" ] } ] } ] } ] }, { "Action": "video_drag", "Stage": "cache", "Phase": 5, "Module": 2, "Groups": [ { "Dimension": "video_drag", "GroupParameters": [ { "Parameters": [ { "Name": "switch", "Values": [ "true" ] } ] } ] } ] }, { "Action": "cache_time", "Stage": "cache", "Phase": 5, "Module": 2, "Groups": [ { "Dimension": "cache_time", "GroupParameters": [ { "Parameters": [ { "Name": "ttl", "Values": [ "56" ] }, { "Name": "ttl_unit", "Values": [ "day" ] }, { "Name": "cache_policy", "Values": [ "origin_first" ] }, { "Name": "replenish", "Values": [ "true" ] }, { "Name": "set_cookie_no_cache", "Values": [ "true" ] } ] } ] } ] }, { "Action": "origin_range", "Stage": "origin_request", "Phase": 2, "Module": 2, "Groups": [ { "Dimension": "origin_range", "GroupParameters": [ { "Parameters": [ { "Name": "switch", "Values": [ "true" ] }, { "Name": "range_type", "Values": [ "fixed" ] }, { "Name": "range_size", "Values": [ "1" ] }, { "Name": "unit", "Values": [ "MB" ] } ] } ] } ] }, { "Action": "origin_follow", "Stage": "origin_request", "Phase": 2, "Module": 2, "Groups": [ { "Dimension": "origin_follow", "GroupParameters": [ { "Parameters": [ { "Name": "switch", "Values": [ "true" ] } ] } ] } ] }, { "Action": "origin_tcp_timeout", "Stage": "origin_request", "Phase": 2, "Module": 2, "Groups": [ { "Dimension": "origin_tcp_timeout", "GroupParameters": [ { "Parameters": [ { "Name": "connect_timeout", "Values": [ "56" ] }, { "Name": "connect_timeout_unit", "Values": [ "sec" ] } ] } ] } ] }, { "Action": "origin_http_timeout", "Stage": "origin_request", "Phase": 2, "Module": 2, "Groups": [ { "Dimension": "origin_http_timeout", "GroupParameters": [ { "Parameters": [ { "Name": "read_timeout", "Values": [ "58" ] }, { "Name": "read_timeout_unit", "Values": [ "sec" ] } ] } ] } ] }, { "Action": "url_auth", "Stage": "client_request", "Phase": 1, "Module": 3, "Groups": [ { "Dimension": "url_auth", "GroupParameters": [ { "Parameters": [ { "Name": "auth_type", "Values": [ "type_e" ] }, { "Name": "master_secret_key", "Values": [ "pk123" ] }, { "Name": "backup_secret_key", "Values": [ "bk456" ] }, { "Name": "sign_name", "Values": [ "sign" ] }, { "Name": "time_name", "Values": [ "ts" ] }, { "Name": "duration", "Values": [ "600" ] }, { "Name": "time_format", "Values": [ "hex" ] }, { "Name": "algorithm", "Values": [ "md5" ] }, { "Name": "rewrite_m3u8", "Values": [ "true" ] }, { "Name": "keep_slice_query", "Values": [ "true" ] }, { "Name": "m3u8_keep_query", "Values": [ "true" ] }, { "Name": "custom_headers", "Values": [ "header1", "header2" ] }, { "Name": "custom_queries", "Values": [ "param1", "param2" ] }, { "Name": "signature_rules", "Values": [ "secret_key", "domain", "uri", "ip", "ua", "referer", "origin", "time_name", "header1", "header2", "param1", "param2" ] } ] } ] } ] } ] }, "ElseBlock": { "Actions": [ { "Action": "redirect_protocol", "Stage": "client_request", "Phase": 1, "Module": 1, "Groups": [ { "Dimension": "redirect_protocol", "GroupParameters": [ { "Parameters": [ { "Name": "status_code", "Values": [ "301" ] }, { "Name": "protocol", "Values": [ "https" ] } ] } ] } ] } ] } } ] } ] } }
如果响应正文的 ResponseMetadata 字段中包含 Error 字段,则表示 API 请求失败。更多关于错误码的信息,参见错误码。