As variáveis integradas do EdgeScript mapeiam variáveis do NGINX, concedendo acesso somente leitura a propriedades da requisição: URI, parâmetros de consulta, cabeçalhos, cookies, IP do cliente e protocolo.
As variáveis integradas são de somente leitura. Não atribua valores a elas.
O prefixo $ (cifrão) identifica uma variável como integrada. Omita o prefixo $ caso a lógica de negócios exija.
Limite de variáveis
Um único script suporta no máximo 200 variáveis. Se a regra exigir mais, divida a lógica em várias funções definidas pelo usuário, cada uma com no máximo 200 variáveis. Consulte Divisão de função para obter um exemplo.
Tratamento de hifens em nomes de variáveis
Três variáveis integradas — $arg_{name}, $http_{name} e $cookie_{name} — usam o espaço reservado {name} para uma chave da string de consulta, campo do cabeçalho da requisição ou campo de cookie. Cada uma trata os hifens de maneira diferente:
|
Variável |
Tratamento de hifens |
|
|
Se |
|
|
Substitua os hifens por sublinhados. Exemplo: |
|
|
Se |
Variáveis integradas
|
Variável |
Retorna |
Variável do NGINX |
|
|
Valor da chave |
|
|
|
Valor do campo |
|
|
|
Valor do campo |
|
|
|
Tipo de protocolo |
|
|
|
Versão do protocolo |
|
|
|
Host original |
|
|
|
URI original |
Nenhuma |
|
|
Todos os parâmetros da string de consulta, excluindo o |
|
|
|
Método da requisição |
|
|
|
URI completa da requisição, equivalente a |
|
|
|
O endereço IP do cliente (ou seja, o primeiro endereço IP presente no cabeçalho de requisição |
|
Exemplo: $arg_{name} e $args
Para a requisição http://example.aliyundoc.com/1k.file?k1=v1&k2=v2:
$arg_k1retornav1$argsretornak1=v1&k2=v2(a string de consulta completa, sem o?)
Divisão de função
Quando uma regra contém mais de 200 variáveis, divida a função original em várias funções definidas pelo usuário. Cada função definida pelo usuário deve conter no máximo 200 variáveis.
#If variables exceed the limit, split them like this:
def judeg_arg() {
#Parameter judgment related logic
x
x
}
def judeg_time() {
#Time judgment related logic
x
x
}
def judeg_token() {
#Encryption judgment related logic
x
x
}
judeg_arg()
judeg_time()
judeg_token()