云服务器内容精选

  • 脚本配置示例 { "scope": "basic", "default_interval": 60, "default_time_unit": "second", "api_limit": 100, "app_limit": 50, "user_limit": 50, "ip_limit": 20, "specials": [ { "type": "app", "policies": [ { "key": "e9230d70c749408eb3d1e838850cdd23", "limit": 10 } ] }, { "type": "user", "policies": [ { "key": "878f1b87f71c40a7a15db0998f358bb9", "limit": 10 } ] } ], "algorithm": "counter", "parameters": [ { "id": "3wuj354lpptv0toe0", "value": "reqPath", "type": "path", "name": "reqPath" }, { "id": "53h7e7j11u38l3ocp", "value": "method", "type": "method", "name": "method" }, { "id": "vv502bnb6g40td8u0", "value": "Host", "type": "header", "name": "Host" } ], "rules": [ { "match_regex": "[\"Host\",\"==\",\"www.abc.com\"]", "rule_name": "u8mb", "time_unit": "second", "interval": 2, "limit": 5 } ] }
  • 配置参数说明 表1 配置参数说明 参数 配置说明 流控类型 推荐使用高性能流控。 高精度流控:高并发场景下实例内部会有一定的性能损耗,适用于并发量较小的场景。 高性能流控:高并发场景下实例内部性能损耗较小,单位时间内会偶现较小的误差值,适用于并发量较大的场景。 单机流控:实例的每个节点各自进行流控,高并发场景下实例内部性能损耗最小,单位时间内会存在一定的误差值,适用于并发量更大的场景。 策略生效范围 单个API生效 对单个API进行流量统计和控制。 API共享生效 对绑定了该策略的所有API进行总流量统计和控制。 时长 流量限制的时长。 与“API流量限制”配合使用,表示单位时间内的单个API请求次数上限。 与“用户流量限制”配合使用,表示单位时间内的单个用户请求次数上限。 与“凭据流量限制”配合使用,表示单位时间内的单个凭据请求次数上限。 与“源IP流量限制”配合使用,表示单位时间内的单个IP地址请求次数上限。 API流量限制 单个API被调用次数上限。 与“时长”配合使用,表示单位时间内的单个API请求次数上限。 用户流量限制 单个用户调用API次数上限,如果API认证方式为IAM认证,用户流量根据项目ID来限制;如果API认证方式为APP认证,用户流量根据账号ID来限制。账号ID和项目ID请参考下文“特殊租户”配置说明。 不超过“API流量限制”。 与“时长”配合使用,表示单位时间内的单个用户请求次数上限。 如果主账号下有多个子用户访问API,按主账号累计的调用次数进行限制。 凭据流量限制 单个凭据调用API次数上限,仅适用于API的安全认证方式为APP认证时。 不超过“API流量限制”。 与“时长”配合使用,表示单位时间内的单个凭据请求次数上限。 源IP流量限制 单个IP地址调用API次数上限。 不超过“API流量限制”。 与“时长”配合使用,表示单位时间内的单个IP地址请求次数上限。 参数流控配置 参数流控配置开关。开启后,以参数维度进行流控限制。 定义参数 定义用于规则匹配的参数。 参数位置:用于规则匹配的参数位置。 path:API请求的URI,系统默认配置。 method:API请求方法,系统默认配置。 Header:请求头的key值。 Query:QueryString的key值。 System:系统参数。 参数:用于判断与规则匹配中的参数值是否匹配。 定义规则 定义规则的匹配条件,以及API流量限制和时长。 单击“添加规则”,可添加多个规则。 规则匹配 单击,可添加多个条件表达式,选择“定义参数”中的参数名和判断条件,以及输入参数值。 =为等于 !=为不等于 pattern为正则表达式 enum为枚举值,多个参数值之间用英文逗号分隔 API流量限制 API调用次数的最大值。 时长 定义规则的流量控制时长,如果此处不配置时长,规则的流量控制时长以“策略基本信息”的时长为准。 例如,在“定义参数”中添加参数“Host”,参数位置选择“Header”;在“定义规则”中添加一条规则,匹配条件设置成“Host = www.abc.com”,API流量限制为10,时长为60s。表示在60s内,对于请求头域中Host参数等于“www.abc.com”的API,且API调用次数达到10,参数流控生效。 特殊流控配置 特殊流控配置开关。开启后,“基础流控”的用户流量限制/凭据流量限制与“特殊流控”的特殊租户/特殊凭据共同作用时,以特殊流控值为准。 特殊租户 租户ID为账号ID或项目ID。 绑定APP认证的API时,租户ID为项目ID,获取项目ID。 绑定华为IAM认证的API时,租户ID为账号ID,不支持细分到IAM用户维度,获取账号名和账号ID。 阈值为单位时间内,此租户访问API的最大值,不超过“基础流控”的API流量限制值。 特殊凭据 选择已有凭据,阈值为单位时间内,此凭据访问API的最大值,不超过“基础流控”的API流量限制值。
  • 更新SSL证书 进入证书列表页面,找到待更新证书,在“操作”列单击“编辑”,修改证书信息即可。 更新SSL证书不影响API的调用。 如果待更新证书已绑定独立域名,那么所有访问这个域名的客户端都会看到更新后的证书。 如果更新的SSL证书已绑定独立域名且更新的内容新增CA证书,那么独立域名侧默认关闭“支持客户端认证”即关闭HTTPS双向认证;如果更新的SSL证书已绑定独立域名且更新的内容无CA证书,那么独立域名侧默认关闭“支持客户端认证”即未开启HTTPS双向认证。
  • 转换证书为PEM格式 格式类型 转换方式(通过OpenSSL工具进行转换) CER/CRT 将“cert.crt”证书文件直接重命名为“cert.pem”。 PFX 提取私钥命令,以“cert.pfx”转换为“key.pem”为例。 openssl pkcs12 -in cert.pfx -nocerts -out key.pem 提取证书命令,以“cert.pfx”转换为“cert.pem”为例。 openssl pkcs12 -in cert.pfx -nokeys -out cert.pem P7B 证书转换,以“cert.p7b”转换为“cert.cer”为例。 openssl pkcs7 -print_certs -in cert.p7b -out cert.cer 将“cert.cer”证书文件直接重命名为“cert.pem”。 DER 提取私钥命令,以“privatekey.der”转换为“privatekey.pem”为例。 openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem 提取证书命令,以“cert.cer”转换为“cert.pem”为例。 openssl x509 -inform der -in cert.cer -out cert.pem
  • 配置参数说明 表1 配置参数说明 信息项 描述 策略名称 访问控制策略的名称。 类型 控制访问API的类型。 IP地址:限制调用API的IP地址。 账号名:仅适用IAM认证类型的API,限制调用API的账号名。仅支持配置账号名,对账号名及账号名下的IAM用户名做限制,不支持配置IAM用户名。 账号ID:仅适用IAM认证类型的API,限制调用API的账号ID。仅支持配置账号ID,对账号ID及账号ID下的IAM用户ID做限制,不支持配置IAM用户ID。 说明: 一个API同时绑定两种类型的访问控制策略:账户维度的账户名类型和账号ID类型。访问API时,如果同时有黑白名单,只校验白名单,校验通过则访问成功;如果只有黑名单或白名单,校验通过的结果为“且”逻辑。 一个API同时绑定三种类型的访问控制策略:IP维度的IP类型、账户维度的账号名类型和账号ID类型。访问API时,IP维度和账户维度为“且”的关系,其中一方校验失败则访问失败。(一个API同时绑定IP类型和账号名/账号ID类型的访问控制策略,这两种类型的判断逻辑与三种类型的判断逻辑相同)。 动作 包括“允许”和“禁止”。 和“类型”配合使用,允许/禁止访问API的IP地址/账号名/账号ID。 IP地址 仅当“类型”为“IP地址”时需要配置。 输入允许或者禁止访问API的IP地址,或IP地址范围。 说明: 允许或禁止访问的IP地址条数,分别可以配置最多100条。 账号名 仅当“类型”为“账号名”时需要配置。 输入允许或者禁止访问API的账号名,多个账号名之间使用英文逗号(,)隔开。 您可以单击控制台右上角的用户名,选择“我的凭证”,在“我的凭证”页面获取用户的账号名。 账号ID 仅当“类型”为“账号ID”时需要配置。 输入允许或者禁止访问API的账号ID,多个账号ID之间使用英文逗号(,)隔开。 您可以单击控制台右上角的用户名,选择“我的凭证”,在“我的凭证”页面获取用户的账号ID。
  • 添加特殊租户 在流控策略详情页面,单击“特殊租户”,进入特殊租户页面。 单击“添加特殊租户”,弹出“添加特殊租户”对话框。 输入租户信息。 图1 添加特殊租户 表2 特殊租户信息 信息项 描述 租户ID 绑定华为IAM认证的API时,租户ID填写API调用者的账号ID。 绑定APP认证的API时,租户ID填写APP所属者的项目ID。 您可以单击控制台右上角的用户名,选择“我的凭证”,在我的凭证页面获取用户的项目ID和账号ID。 阈值 “时长”时间内,此租户访问单个API次数的最大值。 不能大于“API流量限制”值。 单击“确定”,完成特殊租户的添加。
  • 配置参数说明 表1 配置参数说明 信息项 描述 策略名称 API流控策略名称。 类型 分“基础流控”和“共享流控”两类。 基础流控:针对单个API进行流量统计和控制。 共享流控:针对绑定了该策略的所有API进行总流量统计和控制。 时长 流量限制的时长。时长单位支持秒,分钟,小时,天。 与“API流量限制”配合使用,表示“时长”时间内的单个API请求次数上限。 与“用户流量限制”配合使用,表示“时长”时间内的单个用户请求次数上限。 与“凭据流量限制”配合使用,表示“时长”时间内的单个凭据请求次数上限。 与“源IP流量限制”配合使用,表示“时长”时间内的单个IP地址请求次数上限。 API流量限制 单个API被调用次数上限。 与“时长”配合使用,表示“时长”时间内的单个API请求次数上限。 用户流量限制 单个用户调用API次数上限,仅在API的安全认证方式为“华为IAM认证”时适用。 不能大于“API流量限制”的值。 与“时长”配合使用,表示“时长”时间内的单个用户请求次数上限。 如果主账号下有多个子用户访问API,按主账号累计的调用次数进行限制。 说明: 如果希望单独为某个用户添加流量控制策略,可以通过对该策略增加特殊租户实现,具体参考添加特殊租户。增加特殊租户后,此用户调用API次数的上限受增加特殊租户时设置的“阈值”限制,其他用户调用API次数的上限,仍然受本参数值限制。 凭据流量限制 单个凭据调用API次数上限,仅在API的安全认证方式为“APP认证”时适用。 不能大于“API流量限制”的值。 与“时长”配合使用,表示“时长”时间内的凭据请求次数上限。 说明: 如果希望单独为某个凭据添加流量控制策略,可以通过对该策略增加特殊应用实现,具体参考添加特殊应用。增加特殊应用后,此凭据调用API次数的上限受增加特殊应用时设置的“阈值”限制,其他凭据调用API次数的上限,仍然受本参数值限制。 源IP流量限制 单个IP地址调用API次数上限。 不能大于“API流量限制”的值。 与“时长”配合使用,表示“时长”时间内的IP地址请求次数上限。 描述 关于控制策略的描述。
  • 配置参数说明 表1 配置参数 参数 配置说明 策略生效范围 单个API生效 对单个API进行控制。 API共享生效 对绑定了该策略的所有API进行控制。 断路器类型 选择断路器的触发类型。 超时降级:断路器以后端服务超时作为触发条件。 匹配条件降级:断路器以“匹配条件”中的设置作为触发条件。 条件模式 选择断路器的触发模式。 计数器:在时间窗内满足触发条件的请求次数达到设定阈值,则立即触发断路器。 百分比:在时间窗内满足触发条件的请求率达到设定阈值,时间窗结束后触发断路器。 匹配条件 仅当“断路器类型”选择“匹配条件降级”时需配置。 配置断路器的触发条件。 响应错误码:后端响应状态码符合设定值,则该后端请求满足触发条件。 触发降级响应时延:后端响应时延超过设定值,则该后端请求满足触发条件。 时间窗(秒) 断路器的触发次数统计时间窗,与“阈值”或“最小百分比”参数配合使用,当时间窗内的触发次数达到设定阈值或百分比,则触发断路器。 阈值(次) 仅当“条件模式”选择“计数器”时需配置。 断路器的触发阈值,与“时间窗”参数配合使用。在时间窗内,满足触发条件的后端请求次数达到阈值,则触发断路器。 说明: 断路器策略是按单个网关组件分开触发,如果API网关存在多个网关组件,则各个网关组件的触发统计分开计数。 如果某个网关组件在时间窗内的触发次数超过阈值,则发送到该网关组件上的请求会触发断路器,其他未超过阈值的网关组件依然正常转发请求。 您可以在API网关实例控制台的“实例信息”页面,在“出私网IP”下查看网关组件的IP个数,一个IP表示为一个网关组件。 最小调用次数 仅当“条件模式”选择“百分比”时需配置。 时间窗内触发断路器的API最小调用次数。如果时间窗内API的总调用次数小于该值,则不触发断路器。 最小百分比(%) 仅当“条件模式”选择“百分比”时需配置。 断路器的触发阈值,与“时间窗”参数配合使用。当时间窗内的满足触发条件的后端请求百分比达到阈值,则触发断路器。 开启时长(秒) 断路器开启的持续时间,断路器开启时间达到该值后将关闭。 后端降级策略 后端降级策略开关。 开启:触发降级的API将把请求转发到指定后端服务。 关闭:触发降级的API不会把请求转发到任何后端服务,直接返回服务不可用的错误信息。 后端策略类型 仅当“后端降级策略”开启时需配置。 断路器开启后,后端请求的转发策略类型。 Mock:把配置的响应结果作为后端服务响应固定返回。 Mock自定义返回码:后端服务响应的状态码。 Mock返回结果:后端服务响应的Body信息,JSON格式。 响应头参数:后端服务响应的Header参数。 HTTP&HTTPS:把后端服务请求转发给指定HTTP&HTTPS后端服务。 负载通道:是否使用负载通道访问后端服务。如果选择“使用”,您需要提前创建负载通道。 后端URL:配置要转发的后端服务请求地址。 后端超时(ms):后端服务请求的超时时间,默认为5000ms。 FunctionGraph:把后端服务请求转发给指定函数。 函数URN:函数请求的唯一标识。单击“添加”,添加作为后端服务的函数URN。 函数名:选择函数URN后自动配置。 版本:选择要使用的函数版本。 调用类型:选择函数的调用类型。 Synchronous:表示同步调用,后端函数服务收到调用请求后立即执行并返回调用结果,客户端发送请求后同步等待,收到后端响应后关闭连接。 Asynchronous:表示异步调用,后端函数服务收到调用请求后将请求排队,执行成功后返回调用结果,服务端在空闲的情况下会逐个处理排队的请求,客户端不关注请求调用的结果。 后端超时(ms):后端服务请求的超时时间,默认为5000ms。 Passthrough:把后端服务请求转发给API的原后端服务。 单击“添加参数”,可为转发给后端服务的请求添加请求头参数。 降级参数配置 降级参数配置开关。开启后可为断路器自定义规则,API请求优先匹配自定义规则中的触发条件和降级策略,仅当未匹配到自定义规则时才执行上方配置的默认触发条件和降级策略。 如果匹配到自定义规则,则执行规则内配置的触发条件和降级策略。如果匹配到的自定义规则内未配置触发条件或降级策略,则执行上方配置的默认触发条件或降级策略。 如果未匹配到自定义规则,则执行上方配置的默认触发条件和降级策略。 定义参数 定义用于规则匹配的参数。 参数位置:参数在API请求中的位置。 参数:用于做规则匹配的参数名。 系统默认包含reqPath(请求路径)和method(请求方法)参数。单击“添加参数”,可添加其他匹配参数。 定义规则 自定义断路器的匹配规则。单击“添加规则”,可添加规则,系统根据从上到下的顺序匹配规则,可通过上下移动调整规则优先级。 匹配条件:单击“”编辑匹配条件表达式。如果表达式数量大于等于3个,可通过“转子层级”对表达式进行分层设置。 =为等于 !=为不等于 pattern为正则表达式 enum为枚举值,多个参数值之间用英文逗号分隔 触发条件和后端降级策略配置可参考上方的默认触发条件和降级策略配置。 例如,开启“降级参数配置”,按顺序添加“rule01”和“rule02”规则,“rule01”关闭“触发条件配置”并且开启“后端降级策略”,“rule02”两者都开启。断路器优先判断“rule01”匹配条件,如果匹配则会按照上方配置的默认触发条件开启断路器(rule01内未配置触发条件),并执行rule01内的后端降级策略。如果不匹配则会继续判断“rule02”,以此类推。
  • 脚本配置示例 { "breaker_condition":{ "breaker_type":"timeout", "breaker_mode":"counter", "unhealthy_threshold":30, "time_window":15, "open_breaker_time":15, "unhealthy_percentage":51, "min_call_threshold":20 }, "scope":"share", "downgrade_default":{ "type":"http", "passthrough_infos":null, "func_info":null, "mock_info":null, "http_info":{ "isVpc":false, "vpc_channel_id":"", "address":"10.10.10.10", "scheme":"HTTP", "method":"GET", "path":"/demo", "timeout":5000 }, "http_vpc_info":null }, "downgrade_parameters":[ { "name":"reqPath", "type":"path", "value":"path", "disabled":true, "focused":true, "id":"92002eqbpilg6g" }, { "name":"method", "type":"method", "value":"method", "disabled":true, "focused":true, "id":"tuvxetsdqvcos8" }], "downgrade_rules":[ { "rule_name":"rule-test1", "parameters":[ "reqPath", "method" ], "match_regex":"[\"reqPath\",\"==\",\"/test\"]", "downgrade_backend":{ "type":"mock", "passthrough_infos":null, "func_info":null, "mock_info":{ "status_code":200, "result_content":"{status: ok}", "headers":[] }, "http_info":null, "http_vpc_info":null }, "breaker_condition":{ "breaker_type":"timeout", "breaker_mode":"percentage", "unhealthy_threshold":30, "time_window":15, "open_breaker_time":15, "unhealthy_percentage":51, "min_call_threshold":20 } }] }
  • 配置参数说明 表1 配置参数说明 信息项 描述 密钥名称 自定义名称,用于识别不同的密钥。 类型 选择签名密钥的认证类型,可选择“HMAC”、“Basic Auth”、“Public Key”和“Aes”。 签名算法 选择Aes的签名算法,包含以下两种: aes-128-cfb aes-256-cfb Key 根据选择的密钥类型,填写不同的密钥信息。 HMAC:填写APP认证所使用密钥对的Key。 Basic Auth:填写basic认证所使用的用户名。 Aes:填写Aes认证所使用的密钥Key。 Public Key:填写Public Key认证所使用的公钥。 Secret 根据选择的密钥类型,填写不同的密钥信息。 HMAC:填写APP认证所使用密钥对的Secret。 Basic Auth:填写basic认证所使用的密码。 Aes:填写Aes认证所使用的向量。 Public Key:填写Public Key认证所使用的私钥。 确认Secret 填写与“Secret”一致的值。
  • 使用流程 图1 签名密钥流程图 在API中心管理控制台创建签名密钥。 将新创建的签名密钥绑定API。 API网关代理将签名后的请求发送到后端服务,此时Authorization头中包含签名信息。后端服务通过不同的开发语言(例如Java、Go、Python、JavaScript、C#、PHP、C++、C等)进行签名,通过比对签名结果和API网关代理传过来的Authorization头中签名是否一致,来校验API网关代理的合法性。
  • 配置参数说明 表1 配置参数说明 参数 配置说明 allowed origins Access-Control-Allow-Origin响应头,指定允许访问API的外域URI,多个URI之间使用英文逗号隔开。 对于未携带身份凭证的请求,可以把参数值设置为“*”,表示允许来自所有域的访问请求。 allowed methods Access-Control-Allow-Methods响应头,指定允许使用的HTTP请求方法,多个请求方法之间使用英文逗号隔开。 allowed headers Access-Control-Allow-Headers响应头,指定XMLHttpRequest请求中允许携带的请求头字段,多个请求头之间使用英文逗号隔开。 其中,简单请求头Accept、Accept-Language、Content-Language、Content-Type(取值仅限为application/x-www-form-urlencoded、multipart/form-data、text/plain时)默认允许在请求中携带,无需在该参数中设置。 exposed headers Access-Control-Expose-Headers响应头,指定XMLHttpRequest请求响应中允许携带的响应头字段,多个响应头之间使用英文逗号隔开。 其中,基本响应头Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma默认允许在响应中携带,无需在该参数中设置。 maximum age Access-Control-Max-Age响应头,指定本次预检请求的有效期,单位为秒。在有效期内,无需再次发出预检请求。 allowed credentials Access-Control-Allow-Credentials响应头,定XMLHttpRequest请求中是否允许携带Cookie。 true表示允许。 false表示不允许。
  • 脚本配置示例 { "allow_origin": "*", "allow_methods": "GET,POST,PUT", "allow_headers": "Content-Type,Accept,Accept-Ranges,Cache-Control", "expose_headers": "X-Request-Id,X-Apig-Latency", "max_age": 172800, "allow_credentials": true}