Adds a domain name to a WAF instance for Website Config protection.
Operation description
Before you call this operation, the domain name (Domain) must meet the following requirements.
-
Domain ownership authentication: If AccessType is set to share (CNAME access) or hybrid_cloud_cname (hybrid cloud CNAME access) with public cloud disaster recovery enabled, you must first complete domain ownership authentication. Invoke the DescribeVerifyContent operation to obtain domain verification information, configure a DNS TXT record or upload an HTTP verification file based on the response, and then invoke the VerifyDomainOwner operation to complete domain ownership authentication. When you invoke the DescribeVerifyContent and VerifyDomainOwner operations, use the DomainName parameter to specify the domain name. The DescribeVerifyContent operation also requires the AccessOrigin parameter to specify the access source. For valid values, refer to the metric description of the DescribeVerifyContent operation.
-
ICP filing: If AccessType is set to share (CNAME access) or hybrid_cloud_cname (hybrid cloud CNAME access) with public cloud disaster recovery enabled, and the domain name is added to Website Config in a region in the Chinese mainland, the domain name must have a valid ICP filing.
Try it now
Test
RAM authorization
|
Action |
Access level |
Resource type |
Condition key |
Dependent action |
|
yundun-waf:CreateDomain |
create |
*DefenseResource
|
None | None |
Request parameters
|
Parameter |
Type |
Required |
Description |
Example |
| InstanceId |
string |
Yes |
The ID of the WAF instance. Note
You can call DescribeInstance to query the ID of the current WAF instance. |
waf_cdnsdf3**** |
| ResourceManagerResourceGroupId |
string |
No |
The ID of the Alibaba Cloud resource group. |
rg-acfm***q |
| Domain |
string |
Yes |
The domain name to query. |
www.aliyundoc.com |
| Listen |
object |
Yes |
The listening configuration. |
|
| HttpsPorts |
array |
No |
The listening ports for HTTPS. |
|
|
integer |
No |
The listening ports for HTTPS, in the format of [port1,port2,......,portN]. |
443 |
|
| HttpPorts |
array |
No |
The listening ports for HTTP. |
|
|
integer |
No |
The listening ports for HTTP, in the format of [port1,port2,......]. |
80 |
|
| Http2Enabled |
boolean |
No |
Specifies whether to enable HTTP/2. This parameter is used only when HttpsPorts is not empty, which indicates that the domain name uses HTTPS. Valid values: |
true |
| CertId |
string |
No |
The ID of the certificate to add. This parameter is used only when HttpsPorts is not empty, which indicates that the domain name uses HTTPS. |
123 |
| SM2Enabled |
boolean |
No |
Specifies whether to enable SM2 certificates. |
true |
| SM2CertId |
string |
No |
The ID of the SM2 certificate to add. This parameter is used only when SM2Enabled is set to true. |
123-cn-hangzhou |
| SM2AccessOnly |
boolean |
No |
Specifies whether to allow only SM2 client access. This parameter is used only when SM2Enabled is set to true. |
true |
| TLSVersion |
string |
No |
The TLS version to add. This parameter is used only when HttpsPorts is not empty, which indicates that the domain name uses the HTTPS protocol. Valid values:
|
tlsv1 |
| EnableTLSv3 |
boolean |
No |
Specifies whether to support TLS 1.3. Valid values: |
true |
| CipherSuite |
integer |
No |
The type of cipher suite to add. This parameter is used only when HttpsPorts is not empty, which indicates that the domain name uses HTTPS. Valid values: |
2 |
| CustomCiphers |
array |
No |
The custom cipher suites to add. |
|
|
string |
No |
The custom cipher suites to add. This parameter is used only when CipherSuite is set to 99. |
ECDHE-ECDSA-AES256-SHA384 |
|
| FocusHttps |
boolean |
No |
Specifies whether to enable forced HTTPS redirect. This parameter is used only when HttpsPorts is not empty (which indicates that the domain name uses HTTPS) and HttpPorts is empty (which indicates that the domain name does not use HTTP). Valid values: |
true |
| XffHeaderMode |
integer |
No |
The method that WAF uses to obtain the originating IP address of the client. Valid values: |
1 |
| XffHeaders |
array |
No |
The custom header fields used to obtain the client IP address. |
|
|
string |
No |
The custom header fields used to obtain the client IP address, in the format of ["header1","header2",......]. |
Client-ip |
|
| IPv6Enabled |
boolean |
No |
Specifies whether to enable IPv6. Valid values: |
true |
| ProtectionResource |
string |
No |
The type of protection resource to use. Valid values: |
share |
| ExclusiveIp |
boolean |
No |
Specifies whether to enable an exclusive IP address. This parameter is used only when IPv6Enabled is set to false (which indicates that IPv6 is disabled) and ProtectionResource is set to share (which indicates that a shared cluster is used). Valid values: |
true |
| HstsIncludeSubDomain |
boolean |
No |
Specifies whether HSTS includes subdomains. Valid values: |
true |
| HstsPreload |
boolean |
No |
Specifies whether to enable HSTS preloading. This feature is disabled by default. Valid values: |
false |
| HstsMaxAge |
integer |
No |
The HSTS expiration time. Unit: seconds. |
365000 |
| Redirect |
object |
Yes |
The forwarding configuration. |
|
| Backends |
array |
No |
The IP addresses or domain names of the origin servers that correspond to the domain name. |
|
|
string |
No |
The IP addresses or domain names of the origin servers that correspond to the domain name. You can set only one type: origin server IP addresses or origin server domain names. When the back-to-origin address is a domain name, only IPv4 is supported. IPv6 is not supported. |
1.1.XX.XX |
|
| Loadbalance |
string |
Yes |
The load balancing algorithm used for back-to-origin requests. Valid values:
|
roundRobin |
| FocusHttpBackend |
boolean |
No |
Specifies whether to enable forced HTTP back-to-origin. This parameter is used only when HttpsPorts is not empty, which indicates that the domain name uses HTTPS. Valid values: |
true |
| SniEnabled |
boolean |
No |
Specifies whether to enable back-to-origin Server Name Indication (SNI). This parameter is used only when HttpsPorts is not empty, which indicates that the domain name uses HTTPS. Valid values: |
true |
| SniHost |
string |
No |
The value of the custom SNI extension field. If you do not set this parameter, the value of the Host field in the request header is used as the value of the SNI extension field by default. In most cases, you do not need to customize SNI unless your business has special configuration requirements and you want WAF to use an SNI that is different from the actual request Host in back-to-origin requests (that is, the custom SNI set here). Note
This parameter is required only when SniEnabled is set to true (indicating that back-to-origin SNI is enabled). |
www.aliyundoc.com |
| RequestHeaders |
array<object> |
No |
The traffic mark header fields and values for the domain name, used to mark traffic processed by WAF. |
|
|
object |
No |
The value of this parameter is in the format of [{"k":"key","v":"value"}], where key specifies the custom request header field and value specifies the value set for the field. |
||
| Key |
string |
No |
The custom request header field. |
aaa |
| Value |
string |
No |
The value set for the custom request header field. |
bbb |
| ConnectTimeout |
integer |
No |
The connection timeout period. Unit: seconds. |
120 |
| ReadTimeout |
integer |
No |
The read timeout period. Unit: seconds. |
200 |
| WriteTimeout |
integer |
No |
The write timeout period. Unit: seconds. |
200 |
| CnameEnabled |
boolean |
No |
Specifies whether to enable public cloud disaster recovery. Valid values:
|
true |
| RoutingRules |
string |
No |
The hybrid cloud forwarding rules. The value is a string converted from a JSON array. Each element in the JSON array is a struct that contains the following fields: |
[ { "rs": [ "1.1.XX.XX" ], "backupRs": [ "2.2.XX.XX" ], "locationId": 535, "location": "test1111" } ] |
| Keepalive |
boolean |
No |
Specifies whether to enable persistent connections. Valid values: |
true |
| Retry |
boolean |
No |
Specifies whether to retry when WAF fails to forward requests to the origin server. Valid values: |
true |
| KeepaliveRequests |
integer |
No |
The number of requests that reuse a persistent connection. Valid values: 60 to 1000. Default value: 1000. |
1000 |
| KeepaliveTimeout |
integer |
No |
The idle timeout period for persistent connections. Valid values: 1 to 60. Default value: 15. Unit: seconds. |
15 |
| XffProto |
boolean |
No |
Specifies whether to use X-Forward-For-Proto to pass the protocol used by WAF. Valid values: |
false |
| BackupBackends |
array |
No |
The IP addresses or domain names of the secondary origin servers that correspond to the domain name. |
|
|
string |
No |
The IP addresses or domain names of the secondary origin servers that correspond to the domain name. You can set only one type: origin server IP addresses or origin server domain names. When the back-to-origin address is a domain name, only IPv4 is supported. IPv6 is not supported. |
2.2.XX.XX |
|
| XClientIp |
boolean |
No |
Specifies whether to allow WAF to overwrite X-Client-IP. Valid values: |
true |
| XTrueIp |
boolean |
No |
Specifies whether to allow WAF to overwrite X-True-IP. Valid values: |
true |
| WebServerType |
boolean |
No |
Specifies whether to allow WAF to overwrite Web-Server-Type. Valid values: |
true |
| WLProxyClientIp |
boolean |
No |
Specifies whether to allow WAF to overwrite WL-Proxy-Client-IP. Valid values: |
true |
| MaxBodySize |
integer |
No |
The maximum request body size. Valid values: 2 to 10. Default value: 2. Unit: GB. |
2 |
| Http2Origin |
boolean |
No |
Specifies whether to enable HTTP/2 back-to-origin. Valid values: |
true |
| Http2OriginMaxConcurrency |
integer |
No |
The maximum number of concurrent HTTP/2 back-to-origin connections. Valid values: 1 to 512. Default value: 128. |
128 |
| BackendPorts |
array<object> |
No |
The custom port configuration. |
|
|
object |
No |
The custom port configuration. |
||
| ListenPort |
integer |
No |
The listening port. |
80 |
| BackendPort |
integer |
No |
The back-to-origin port. |
80 |
| Protocol |
string |
No |
The protocol of the listening port. Valid values: |
http |
| ProxyProtocol |
boolean |
No |
Indicates whether the client source IP preservation feature is enabled.
|
false |
| RegionId |
string |
Yes |
The region where the WAF instance resides. Valid values: |
cn-hangzhou |
| AccessType |
string |
No |
The access type of the WAF instance. Valid values:
Note
If the value is share, or if the value is hybrid_cloud_cname and public cloud disaster recovery is enabled, call the DescribeVerifyContent and VerifyDomainOwner operations to verify domain name ownership first. If the domain name is connected to a region in the Chinese mainland, ICP filing must also be completed. |
share |
| Tag |
array<object> |
No |
The list of tags. You can specify up to 20 tags. |
|
|
object |
No |
The tags of the resource. You can specify up to 20 tags. |
||
| Key |
string |
No |
The tag key. |
Tagkey1 |
| Value |
string |
No |
The tag value. |
TagValue1 |
Response elements
|
Element |
Type |
Description |
Example |
|
object |
The response returned after a domain name is added. |
||
| RequestId |
string |
The request ID. |
D7861F61-5B61-46CE-A47C-6B19160D5EB0 |
| DomainInfo |
object |
The information about the added domain name. |
|
| Cname |
string |
The CNAME assigned by WAF to the domain name. |
xxxxxwww.****.com |
| Domain |
string |
The name of the added domain name. |
www.aliyundoc.com |
| DomainId |
string |
The domain name ID. |
www.aliyundoc.com-waf |
Examples
Success response
JSON format
{
"RequestId": "D7861F61-5B61-46CE-A47C-6B19160D5EB0",
"DomainInfo": {
"Cname": "xxxxxwww.****.com",
"Domain": "www.aliyundoc.com",
"DomainId": "www.aliyundoc.com-waf"
}
}
Error codes
|
HTTP status code |
Error code |
Error message |
Description |
|---|---|---|---|
| 400 | Waf.Pullin.ResourceExsit | Access resource already exists, resource:%s. | Access resource already exists, existing resource:%s. |
| 400 | Waf.Pullin.BusinessViolation | The web services are suspected of violating regulations. If you have any questions, please submit a work order. Violating resource: %s. | The web services are suspected of violating regulations. If you have any questions, please submit a work order. Violating resource: %s. |
| 400 | Waf.Pullin.Http2OriginMustOnHttp2Enable | When HTTP2 origin is enabled, HTTP2 listening must be enabled. | When HTTP2 back-to-source is enabled, HTTP2 listening must be enabled. |
| 400 | Waf.Pullin.Http2OriginMustOnKeepaliveEnable | When the HTTP2 origin is turned on, the keepalive must be turned on. | When the HTTP2 origin is turned on, the keepalive must be turned on. |
| 400 | Waf.Pullin.Http2OriginEnabledFocusHttpBackendForbidden | When HTTP2 origin is enabled, HTTP origin cannot be enabled. | When HTTP2 origin is enabled, HTTP origin cannot be enabled. |
| 400 | Waf.Pullin.BatchDnsScheduleCheckFailed | Batch dns scheduling is in progress, and access related operations are prohibited. | batch dns scheduling is in progress, and access-related operations are prohibited. |
| 400 | Waf.Pullin.InvalidMaxAgeWithPreload | HstsMaxAge the parameter is incorrect, when the HstsPreload is True, the HstsMaxAge must be greater than or equal to 31536000. | HstsMaxAge the parameter is incorrect, when the HstsPreload is True, the HstsMaxAge must be greater than or equal to 31536000 |
| 400 | Waf.Pullin.InvalidIncludeSubDomainWithPreload | The parameter HstsIncludeSubDomain is invalid. When the parameter HstsPreload is true, the HstsIncludeSubDomain must be true. | The parameter HstsIncludeSubDomain is invalid. When the parameter HstsPreload is true, the HstsIncludeSubDomain must be true. |
| 400 | Waf.Pullin.InvalidCustomCiphers | Invalid custom cipher suite. | Invalid custom cipher suite. |
| 400 | Waf.Pullin.InvalidHttp2OriginWithProxyProtocol | http2Origin and proxyProtocol cannot be opened at the same time. | http2Origin and proxyProtocol cannot be opened at the same time. |
See Error Codes for a complete list.
Release notes
See Release Notes for a complete list.