O recurso de origem condicional usa o mecanismo de regras para filtrar solicitações de usuários com base em critérios especificados, como cabeçalhos de solicitação, parâmetros de string de consulta, caminhos ou endereços IP do cliente. O CDN encaminha as solicitações que correspondem aos critérios para um endereço de origem específico. Você pode adicionar várias configurações para direcionar solicitações a diferentes origens com base em condições distintas.
Pré-requisitos
Antes de configurar uma origem condicional, crie uma condição de regra no rules engine.
Notas de uso
Conflito de recursos: os recursos de origem condicional e advanced origin são mutuamente exclusivos. Ative apenas um deles.
Suporte a curingas: no mecanismo de regras, o valor de correspondência de URI aceita os curingas
*(corresponde a qualquer número de caracteres) e?(corresponde a qualquer caractere único). A correspondência de caminho no recurso de origem avançada aceita apenas valores exatos, sem suporte a curingas.Prioridade da regra e ordem de correspondência: as origens condicionais são avaliadas com base na prioridade da condição de regra associada no mecanismo de regras, e não na ordem das configurações de origem condicional. Quando uma solicitação corresponde a uma regra, a avaliação é interrompida. A prioridade da regra no mecanismo de regras é determinada pela ordem de criação: regras criadas primeiro têm maior prioridade. Para ajustar a prioridade de correspondência, exclua e recrie as regras na ordem desejada.
Dica de configuração de múltiplos caminhos: ao criar regras para "incluir" ou "excluir" um caminho, insira vários caminhos (em múltiplas linhas ou como múltiplos valores) no campo de valor de correspondência de uma única regra para simplificar a configuração.
Limite de regras: o número de condições de regra que uma origem condicional pode referenciar está sujeito a um limite global no mecanismo de regras. Para um único domínio, o número total de referências a condições de regra em todos os recursos, incluindo origem condicional, origem avançada e proteção contra hotlink baseada em Referer, não pode exceder cinco. Em cenários complexos de múltiplas origens, exceder esse limite causa falha na configuração. Planeje cuidadosamente o uso das regras ou use domínios separados para aceleração caso tenha muitas origens.
Considerações para origens OSS
Se uma origem for um bucket OSS, adicione o endereço em Domain Names > Basics > Origin Information e defina o tipo de origem como OSS Domain. Isso permite que o CDN faça a autenticação correta com o OSS.
-
Cenários com múltiplas origens OSS: ao configurar várias origens OSS, configure um origin Host específico para cada uma. O valor do Host deve corresponder exatamente ao domínio do bucket OSS correspondente, como
dev-3mir.oss-cn-guangzhou.aliyuncs.com.Se o Host de origem não for configurado corretamente ou se você depender do Host de origem padrão, as solicitações poderão ser encaminhadas para o bucket errado. Isso pode causar erros 403 SignatureDoesNotMatch ou 404 Not Found. Vincule explicitamente cada regra de origem condicional, incluindo regras de correspondência e regras de fallback, à sua origem e Host de origem correspondentes. Ao configurar múltiplas origens, defina pesos iguais para as origens básicas e crie condições de regra separadas para cada origem condicional, garantindo assim um roteamento previsível.
Comparação de tipos de origem
Tanto as origens condicionais quanto as avançadas podem referenciar condições de regra do mecanismo de regras para criar políticas flexíveis de roteamento de origem. O CDN seleciona automaticamente uma origem se uma solicitação corresponder a uma condição de regra:
|
Tipo de origem |
Condição de acionamento |
|
origem condicional |
A solicitação corresponde à condição de regra referenciada pela origem condicional. |
|
origem avançada |
A solicitação corresponde à condição de regra referenciada pela origem avançada. |
|
origem básica |
A solicitação não corresponde a nenhuma regra de origem condicional ou avançada (fallback padrão). |
Failover de origem primária/secundária: após uma solicitação corresponder a uma regra de origem avançada ou condicional, o CDN execute uma busca de origem diretamente na origem especificada por essa regra. As configurações de prioridade e peso das origens básicas deixam de ser aplicadas. Para o failover de origem primária/secundária, configure as definições de prioridade e peso das origens básicas, em vez de usar uma regra de origem condicional direcionada a uma única origem.
Procedimento
Faça login no CDN console.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, encontre o nome de domínio de destino e gerencie clicando em Manage na coluna Actions.
Na seção Origin Information, clique em Expand ao lado de Conditional Origin.
Clique em Add Conditional Origin.
-
Defina a Rule Condition.
Se for a primeira vez que você adiciona uma configuração ou se precisar, modifique uma condição de regra existente, clique em Conditional Origin na caixa de diálogo Rules Engine. Isso abre o mecanismo de regras, onde você pode adicionar ou modifique configurações. Para mais informações, consulte rules engine.
Se você já tiver uma condição de regra, selecione-a na lista suspensa Rule Condition.
No campo Origin Address, insira o endereço de origem. O endereço de origem pode ser um endereço IP, um nome de domínio, um bucket OSS ou um endpoint do function compute (FC).
Clique em OK para concluir a configuração.
Exemplo: Roteamento de solicitações /api/* para o FC
O recurso de origem avançada aceita apenas correspondência de valor exato e não oferece suporte a curingas ou expressões regulares. Para implementar o roteamento de origem baseado em caminho, use origens condicionais com o mecanismo de regras. Ao combinar o recurso de origem condicional com o mecanismo de regras e a reescrita de url, você pode rotear solicitações para o caminho /api/* para uma origem do function compute (FC), enquanto todas as outras solicitações são roteadas por padrão para uma origem OSS.
Crie uma regra no mecanismo de regras
Acesse Domain Names, encontre o domínio de destino e acesse a página Rules Engine.
-
Clique em Add Rule e configure a condição da regra conforme descrito na tabela a seguir:
Parâmetro
Valor
Rule Name
Insira um nome personalizado para fácil identificação, como
api-to-fc.Match type
URI
Match operator
Include Any
Match value
Clique em Edit, edite e insira
*/api/*e pressione Enter para adicioná-lo. Os curingas*e?são suportados. Uma única regra aceita até 32 valores de correspondência.Case sensitive
Case-insensitive (padrão)
ImportanteNão adicione uma condição de nome de host. A condição de nome de host corresponde ao domínio da solicitação, e não à origem. Adicionar uma condição de nome de host pode impedir que a regra corresponda ao caminho após uma reescrita de url.
Clique em Submit e salve a regra.
Configure a origem condicional
No painel de navegação à esquerda, acesse Domain Names > Basics. Na seção Origin Information, clique no ícone de expansão ao lado de Conditional Origin.
-
Clique em Add Conditional Origin e configure os parâmetros na caixa de diálogo conforme descrito na tabela a seguir:
Parâmetro
Valor
Rule Condition
Na lista suspensa, selecione a regra criada na Etapa 1, como
api-to-fc.Origin Address
Insira o endereço da sua origem do function compute (FC).
Clique em OK e salve a configuração.
Configure o Host de origem
Configure um Host de origem específico para a origem do FC para garantir que o CDN envie solicitações de busca de origem com o cabeçalho Host correto.
No painel de navegação à esquerda da página Domain Names, acesse a aba Origin Fetch > Configurations.
Na seção Specify Origin Host, especifique os detalhes e clique em Add.
-
Na caixa de diálogo, configure os seguintes parâmetros e clique em OK.
Parâmetro
Descrição
Origin Type
Selecione Custom Origin. Os endereços de origem configurados nas origens condicionais não aparecem na lista suspensa Basic origin address. Selecione Custom origin e insira o endereço manualmente.
Origin Address
Insira o endereço de origem do FC da Etapa 2.
Origin Host Type
Selecione o tipo de valor de Host a ser usado. Para origens FC, selecione Custom Origin Host e insira o nome de domínio manualmente.
Origin Host
Insira o nome de domínio do FC (por exemplo,
your-fc-function.cn-hangzhou.fcapp.run).Para origens OSS, o valor deve corresponder exatamente ao domínio do bucket OSS (por exemplo,
dev-3mir.oss-cn-guangzhou.aliyuncs.com).Rule Condition
Opcional. Selecione a condição de regra criada na etapa 1 (por exemplo,
api-to-fc) para limitar este Host de origem às solicitações que correspondem à regra.
Não é necessário desativar o Host de origem padrão. Quando o Host de origem padrão e o Host de origem para uma origem específica estão configurados para a mesma origem, o Host de origem da origem específica entra em vigor. Para origens que não possuem um Host de origem específico configurado, o Host de origem padrão permanece em vigor. Para mais informações, consulte origin Host.
Configure uma reescrita de url (opcional)
Se você precisar reescrever o caminho /api/ para o caminho /print/api/ na sua origem FC, também deverá usar o recurso de reescrita de url no CDN:
No mecanismo de regras, configure uma regra de reescrita de url para reescrever
/api/para/print/api/.Certifique-se de que a condição de correspondência de URI no mecanismo de regras da Etapa 1 abranja o caminho reescrito. Por exemplo, use
*/api/*ou corresponda ao caminho específico/print/api/*.
Após concluir essas configurações, o CDN roteia as solicitações de frontend para /api/* ao service do FC, enquanto roteia outras solicitações para a origem OSS por padrão.
Exemplo: Roteamento baseado em Referer
O exemplo a seguir mostra como rotear solicitações para diferentes origens com base no cabeçalho Referer. Isso é útil para proteção contra hotlink ou para controlar o acesso com base na source da solicitação.
Crie uma condição de regra de referer
Faça login no console do CDN, selecione o domínio de destino e acesse Domain Names > Rules Engine.
-
Clique em Add Rule e configure os parâmetros conforme descrito na tabela a seguir. O mecanismo de regras não possui um tipo de correspondência dedicado para Referer. Use o tipo de correspondência Request Header para implementar a correspondência baseada em Referer:
Parâmetro
Valor
Rule Name
Insira um nome descritivo, como
referer-routing.Match type
Request Header
Parameter name
RefererMatch operator
Include Any
Match value
example.com. Este valor especifica o domínio do referer. Você pode adicionar vários domínios.Case sensitive
Case-insensitive
Clique em Submit e salve a regra.
Configure a origem condicional
No painel de navegação à esquerda da página de gerenciamento de domínio, acesse a aba Basics. Na seção Origin Information, clique no ícone de expansão ao lado de Conditional Origin.
-
Clique em Add Conditional Origin e configure os parâmetros na caixa de diálogo conforme descrito na tabela a seguir:
Parâmetro
Valor
Rule Condition
Na lista suspensa, selecione
referer-routing.Origin Address
Insira o endereço da origem para esta source de Referer.
Clique em OK e salve a configuração.
Exemplo: Roteamento de usuários da China continental e fora da China continental para diferentes origens
O exemplo a seguir mostra como usar origens condicionais com o mecanismo de regras para rotear usuários da China continental e de fora da China continental para diferentes servidores de origem.
Faça login no console do CDN. Na página Domain Names, encontre o domínio de destino e clique em Manage na coluna Actions. No painel de navegação à esquerda, clique em Rules Engine e, em seguida, clique em Add Rule.
Configure a regra da China continental: na área de conteúdo da regra, clique no ícone de adição para adicionar uma condição de correspondência. Defina Match type como IP Location, Match operator como Include Any e clique em Modify para selecionar Chinese mainland na lista suspensa como valor de correspondência. Envie e salve a regra.
Configure a regra do exterior (fallback): crie outra regra. Defina Match type como IP Location, Match operator como Exclude Any e defina o valor de correspondência como Chinese mainland. Envie e salve a regra.
-
Configure a origem condicional: na seção Origin Information, associe cada regra à sua origem correspondente:
Associe a regra da China continental a uma origem doméstica (por exemplo, um bucket OSS doméstico ou um servidor doméstico).
Associe a regra do exterior a uma origem no exterior (por exemplo, um bucket OSS no exterior ou um servidor no exterior).
-
Configure o Host de origem: configure um Origin Host dedicado para cada origem para garantir que o valor do Host corresponda ao domínio de origem correspondente.
No painel de navegação à esquerda da página de gerenciamento de domínio, acesse a aba Origin Fetch > Configurations. Na seção Specify Origin Host, especifique os detalhes e clique em Add.
Na caixa de diálogo Specify Origin Host, configure os seguintes parâmetros. Adicione uma entrada para cada origem:
Parâmetro
Valor
Origin Type
Custom origin. Os endereços de origem configurados nas origens condicionais não aparecem na lista suspensa Basic origin address. Selecione Custom origin e insira o endereço manualmente. Se o endereço de origem já estiver adicionado na configuração de origem básica (por exemplo, como uma origem OSS), você também pode selecionar Basic origin address e escolha na lista suspensa.
Origin Address
Insira o endereço de origem associado à origem condicional (por exemplo, o domínio do bucket OSS doméstico ou no exterior).
Origin Host Type
Custom origin Host
Origin Host
Insira o valor do Host que corresponde ao domínio de origem (por exemplo,
bucket.oss-cn-hangzhou.aliyuncs.com).Rule Condition
Selecione a condição de regra que corresponde a esta origem (por exemplo, a regra da China continental ou a regra para fora da China continental).
Clique em OK para concluir a configuração.
Não é necessário desativar o Host de origem padrão. Quando o Host de origem padrão e o Host de origem para uma origem específica estão configurados para a mesma origem, o Host de origem da origem específica entra em vigor. Para origens que não possuem um Host de origem específico configurado, o Host de origem padrão permanece em vigor.
Recomendações
Para cenários em que usuários fora da China continental enfrentam alta latência ou conexões instáveis ao acessar origens na China continental, recomendamos o uso da aceleração de transferência do OSS para otimizar o link de busca de origem. Configure da seguinte forma:
Para a origem condicional da China continental, defina a origem como o endpoint público padrão do OSS (por exemplo,
bucket.oss-cn-hangzhou.aliyuncs.com).Para a origem condicional do exterior, defina a origem como o endpoint de Aceleração de Transferência do OSS (por exemplo,
bucket.oss-accelerate.aliyuncs.com).
O OSS usa nós de aceleração distribuídos globalmente para otimizar links de transferência entre fronteiras e pode reduzir significativamente a latência de busca de origem. Para mais informações, consulte OSS Transfer Acceleration.