All Products
Search
Document Center

Web Application Firewall:CreateDomain

Last Updated:Aug 20, 2026

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

Try this API in OpenAPI Explorer, no manual signing needed. Successful calls auto-generate SDK code matching your parameters. Download it with built-in credential security for local usage.

Test

RAM authorization

The table below describes the authorization required to call this API. You can define it in a Resource Access Management (RAM) policy. The table's columns are detailed below:

  • Action: The actions can be used in the Action element of RAM permission policy statements to grant permissions to perform the operation.

  • API: The API that you can call to perform the action.

  • Access level: The predefined level of access granted for each API. Valid values: create, list, get, update, and delete.

  • Resource type: The type of the resource that supports authorization to perform the action. It indicates if the action supports resource-level permission. The specified resource must be compatible with the action. Otherwise, the policy will be ineffective.

    • For APIs with resource-level permissions, required resource types are marked with an asterisk (*). Specify the corresponding Alibaba Cloud Resource Name (ARN) in the Resource element of the policy.

    • For APIs without resource-level permissions, it is shown as All Resources. Use an asterisk (*) in the Resource element of the policy.

  • Condition key: The condition keys defined by the service. The key allows for granular control, applying to either actions alone or actions associated with specific resources. In addition to service-specific condition keys, Alibaba Cloud provides a set of common condition keys applicable across all RAM-supported services.

  • Dependent action: The dependent actions required to run the action. To complete the action, the RAM user or the RAM role must have the permissions to perform all dependent actions.

Action

Access level

Resource type

Condition key

Dependent action

yundun-waf:CreateDomain

create

*DefenseResource

acs:yundun-waf:{#regionId}:{#accountId}: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: Supports TLS 1.0 and later. Highest compatibility and lowest security.

  • tlsv1.1: Supports TLS 1.1 and later. Good compatibility and good security.

  • tlsv1.2: Supports TLS 1.2 and later. Good compatibility and highest security.

  • tlsv1.3: Supports only TLS 1.3. Highest security and lowest compatibility.

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:

  • iphash: IP hash algorithm.

  • roundRobin: round-robin algorithm.

  • leastTime: Least Time algorithm. This value is available only when ProtectionResource is set to gslb (indicating that the protection resource type uses intelligent load balancing of the shared cluster).

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: Public cloud disaster recovery is enabled.

  • false (default): Public cloud disaster recovery is not enabled.

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.

  • true: The client source IP preservation feature is enabled. After this feature is enabled, backend services can view the originating IP address of the client.

  • false: The client source IP preservation feature is not 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:

  • share (default): CNAME access.

  • hybrid_cloud_cname: hybrid cloud CNAME access.

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.