当标准转发规则无法满足业务需求时,可通过AScript编写自定义转发逻辑。本文介绍AScript的工作原理及规则配置方法。
AScript概述
AScript是ALB提供的可编程脚本功能,内置变量、条件判断和函数库,用于编写自定义转发逻辑。典型应用场景包括:
自定义鉴权:基于请求参数、Cookie或自定义算法实现防盗链,或配置User-Agent黑名单、Referer白名单等。
IP黑白名单管控:按客户端IP进行访问控制。
请求头和响应头修改:灵活修改请求参数、请求头等变量。
URL改写和重定向:改写URI、文件后缀,或按条件302重定向到不同地址。
关于AScript的语法和内置变量,请参见AScript语法与变量参考。更多场景代码示例,请参见AScript场景示例。
工作原理
AScript规则与标准转发规则一样用于处理ALB请求。当客户端请求到达ALB监听后,ALB按照配置的转发规则进行处理,AScript可选择在标准规则处理前或处理后生效。
AScript以监听为维度设计,将不同业务逻辑隔离到独立规则中。每条规则可选择以下执行位置:
请求方向规则执行前/后:常用于文件自动重命名、文件后缀小写化、添加URI前缀和文件后缀名改写等场景。
响应方向规则执行前:常用于文件自动重命名等场景。
前提条件
添加AScript规则
建议先在非生产监听上验证AScript规则,确认流量转发符合预期后,再在生产监听上配置相同规则。
登录ALB控制台的实例页面,单击目标实例ID。
在监听页签单击目标监听ID,单击转发规则页签,根据需求单击请求方向转发规则或响应方向转发规则,然后单击在规则执行前添加可编程脚本或在规则执行后添加可编程脚本。
选择响应方向转发规则时,只允许在规则执行前添加可编程脚本。
在添加可编程脚本页面配置以下参数,然后单击确定。
规则名称:输入自定义规则名称。
规则代码:输入规则代码,或单击使用代码模版选择场景代码模板。可参考AScript场景示例。
执行位置:规则执行位置,不可更改。
启用状态:规则启用状态。
高级配置(选填):当请求携带
_es_dbg参数、且值为此处配置的密钥时,开启调试响应头以输出规则执行记录。调试响应头中的字段说明如下:规则ID:每条规则的唯一性标识,格式为
as-****。执行情况code及说明:
执行情况code
执行情况说明
空
未执行。
0
执行命中。
当规则含有
if condition {},且condition为真。1
执行未命中。
当规则含有
if condition {},且condition为假;或规则不包含if condition {}。2
执行异常。
执行耗时:单位为微秒(us),默认值为-1。
中断执行:默认值为-1。
管理AScript规则
在转发规则页签,用户可以对AScript规则执行以下操作:
单击规则ID旁的开关以启用/禁用规则。
单击可编程脚本卡片右上角的编辑,可修改规则配置。
单击可编程脚本卡片右上角的删除,然后在弹窗中单击确定。
计费说明
AScript规则会影响LCU计费中的规则评估数指标,详见ALB计费规则。