Este tópico descreve como configurar um único listener em uma instância do Classic Load Balancer (CLB) para rotear solicitações HTTPS de diferentes nomes de domínio para servidores de backend distintos, permitindo hospedar vários sites HTTPS.
Exemplo
A instância CLB inspeciona o nome de domínio na solicitação HTTPS, seleciona o certificado correspondente para concluir a autenticação e encaminha a solicitação ao servidor de backend apropriado com base nas regras de encaminhamento.
Este tópico utiliza a seguinte configuração como exemplo:
O certificado padrão do listener, chamado
default, está associado ao nome de domínioaliyundoc.com. O grupo de servidores padrão é RS1.Um certificado adicional,
example1, está associado ao nome de domíniowww.example.com. As solicitações parahttps://www.example.comsão roteadas para o grupo de servidores RS1.Outro certificado adicional,
example2, está associado ao nome de domíniowww.example.org. As solicitações parahttps://www.example.orgsão roteadas para o grupo de servidores RS2.
Pré-requisitos
Crie uma instância CLB. Para mais informações, consulte Create and manage a CLB instance.
Crie dois grupos vServer, RS1 e RS2. Para mais informações, consulte Create and manage a vServer group.
Adicione uma instância ECS, ECS01, ao RS1 e outra instância ECS, ECS02, ao RS2. Implante os serviços de aplicação tanto no ECS01 quanto no ECS02.
Registre os nomes de domínio e conclua o registro ICP. Para mais informações, consulte Register a domain name on Alibaba Cloud e ICP filing process.
-
Compre ou carregue certificados de um provedor terceirizado no Certificate Management Service e vincule-os aos respectivos nomes de domínio. Para mais informações, consulte Enable HTTPS access for a web-based service by using an official certificate. Os seguintes certificados são necessários para este tópico:
Um certificado padrão chamado
defaultvinculado ao nome de domínioaliyundoc.com.Um certificado chamado
example1vinculado ao nome de domíniowww.example.com.Um certificado chamado
example2vinculado ao nome de domíniowww.example.org.
NotaImplante os certificados na instância CLB antes de utilizá-los. Para mais informações, consulte Create a certificate.
Etapa 1: Adicionar um listener HTTPS
Faça login no console do CLB.
Na barra de menus superior, selecione a região onde a instância CLB está localizada.
Na página Instances, localize a instância CLB desejada e, na coluna Actions, clique em Configure Listener.
-
Na aba Protocol & Listener, configure os parâmetros a seguir e clique em Next.
Este tópico descreve apenas os parâmetros obrigatórios. Mantenha os demais parâmetros com seus valores padrão ou configure-os conforme necessário.
Select Listener Protocol: Selecione HTTPS.
Listener Port: Defina a porta como 443.
Na aba Certificate Management Service, selecione o certificado de servidor carregado e clique em Next. Neste exemplo, selecione o certificado
default.Na aba Backend Servers, selecione vServer group e escolha RS1 na lista suspensa Server Group.
Mantenha os valores padrão para os outros parâmetros e clique em Next até chegar à etapa de confirmação. Em seguida, clique em Submit.
Etapa 2: Adicionar nomes de domínio adicionais
Na página Instances, localize a instância CLB desejada e clique no ID da instância alvo.
Na aba Listener, encontre o listener HTTPS criado. Na coluna Actions, clique no ícone
e selecione Manage Additional Certificate.-
No painel Manage Additional Certificate, clique em Add Additional Certificate.
Em Additional Certificate, insira
www.example.com. Na lista suspensa Server Certificate, selecione o certificado associado awww.example.come clique em OK.Em Additional Certificate, insira
www.example.org. Na lista suspensa Server Certificate, selecione o certificado associado awww.example.orge clique em OK.
NotaCertifique-se de que o nome de domínio no certificado corresponda exatamente ao nome de domínio adicional adicionado.
NotaObserve as seguintes limitações ao adicionar nomes de domínio adicionais:
Nomes de domínio curinga não suportam correspondência SNI. Nomes de domínio adicionais curinga, como
*.example.com, não podem ser correspondidos via SNI durante o handshake TLS. Quando um cliente especifica um subdomínio no campo SNI, o CLB não consegue usar o nome de domínio adicional curinga para selecionar o certificado correspondente. Utilize nomes de domínio com correspondência exata, comowww.example.com, como nomes de domínio adicionais.Regras de encaminhamento são obrigatórias. Um nome de domínio adicional deve ser usado em conjunto com uma regra de encaminhamento. Se você adicionar um nome de domínio adicional sem configurar uma regra de encaminhamento correspondente na Etapa 3, o SNI não entrará em vigor e o CLB processará a solicitação usando o certificado padrão.
Retorno ao certificado padrão. Caso uma solicitação HTTPS não corresponda a nenhum nome de domínio adicional, o CLB usará o certificado padrão para processar a solicitação. Este é o comportamento esperado.
Retorno por certificado expirado. Quando o certificado de servidor associado a um nome de domínio adicional expira, o CLB ignora automaticamente a lógica de correspondência SNI para esse certificado. Mesmo que o nome de domínio no campo SNI do cliente corresponda exatamente ao domínio do certificado expirado, o CLB não utilizará o certificado expirado e retornará ao certificado padrão configurado no listener HTTPS. Isso pode fazer com que os clientes recebam o certificado padrão em vez do certificado específico do domínio esperado, resultando em avisos de incompatibilidade de certificado SSL/TLS. Para evitar interrupções no service, renove os certificados dos nomes de domínio adicionais antes que expirem.
Etapa 3: Configurar regras de encaminhamento
Na página Instances, clique no ID da instância CLB desejada.
Na aba Listener, localize o listener e clique em Set Forwarding Rule na coluna Actions.
-
No painel Add Forwarding Rules, adicione as regras de encaminhamento.
Neste exemplo, apenas regras de encaminhamento baseadas em nome de domínio são configuradas. As configurações de URL não são definidas.
Na coluna Domain Name, insira
www.example.com, selecione o grupo vServer RS1 e clique em Add Forwarding Policy.Na coluna Domain Name, insira
www.example.org, selecione o grupo vServer RS2 e clique em Add Forwarding Policy.
Após configurar as regras de encaminhamento, feche o painel Add Forwarding Rules.
Etapa 4: Configurar a resolução de nome de domínio
Adicione registros A para www.example.com e www.example.org apontando para o endereço IP público da instância CLB.
Faça login no console do CLB.
Na barra de navegação superior, selecione uma região.
Selecione a instância CLB para resolução de nome de domínio e copie seu endereço IP público correspondente.
-
Para adicionar um registro A:
Faça login no console do Alibaba Cloud DNS.
Na página Public Zone, clique em Add Zone.
-
Na caixa de diálogo Add Zone, insira seu nome de domínio e clique em OK.
ImportanteVerifique a propriedade do seu domínio usando um registro TXT.
Localize o nome de domínio que deseja gerenciar e clique em Settings na coluna Actions.
Na página Settings, clique em Add Record.
-
No painel Add Record, configure os parâmetros a seguir para adicionar um registro A e clique em OK.
Parâmetro
Descrição
Record Type
Selecione A na lista suspensa.
Hostname
O prefixo do seu nome de domínio.
Query Source
Selecione Default.
Record Value
O valor do registro é o endereço IP público da instância CLB que você copiou.
TTL
Time to live (TTL). Especifica o tempo durante o qual o registro DNS fica armazenado em cache em um servidor DNS. Este exemplo usa o valor padrão.
Etapa 5: Verificar os resultados
Após concluir a configuração, insira https://www.example.com e https://www.example.org em um navegador para verificar se as regras de encaminhamento funcionam corretamente. Este exemplo pressupõe que você implantou uma página web estática simples em cada servidor de backend.
Insira
https://www.example.comno seu navegador. A solicitação é roteada para o ECS01 no grupo de servidores RS1. A página exibeHello World ! This is ECS01.Insira
https://www.example.orgno seu navegador. A solicitação é roteada para o ECS02 no grupo de servidores RS2. A página exibeHello World ! This is ECS02.
Se o teste falhar, tente limpar o cache do navegador e testar novamente.
Perguntas frequentes
P: Após configurar nomes de domínio adicionais, as solicitações HTTPS ainda retornam o certificado padrão. Como solucionar?
Verifique se você está usando nomes de domínio com correspondência exata. Nomes de domínio curinga, como
*.example.com, não suportam correspondência SNI automática no CLB. Utilize nomes de domínio com correspondência exata, comowww.example.com, como nomes de domínio adicionais.Verifique se as regras de encaminhamento estão configuradas. Apenas um nome de domínio adicional não é suficiente para que o SNI entre em vigor. É necessário também configurar uma regra de encaminhamento para cada nome de domínio adicional. Consulte a Etapa 3: Configurar regras de encaminhamento para confirmar que existe uma regra de encaminhamento para o seu nome de domínio adicional.
Verifique se o nome de domínio do certificado corresponde ao nome de domínio adicional. O nome de domínio no certificado deve corresponder exatamente ao nome de domínio adicional configurado. Incompatibilidades fazem com que o CLB retorne ao certificado padrão.
-
Verifique o comportamento do SNI usando openssl. Execute o comando a seguir para checar qual certificado o CLB retorna para um nome de domínio específico:
openssl s_client -connect <CLB_VIP>:443 -servername <domain_name>Na saída, verifique o campo
subjectdo certificado retornado. Se o subject mostrar o nome de domínio padrão em vez do nome de domínio pretendido, verifique se o nome de domínio adicional e a regra de encaminhamento estão configurados corretamente. Verifique a configuração de domínio de extensão no console. Na página Instances, clique no ID da instância CLB desejada, acesse a aba Listeners, localize o listener HTTPS e, na coluna Actions, escolha
> Manage Certificates para verificar o certificado padrão e os domínios de extensão configurados. Se a lista Manage Additional Certificate estiver vazia, nenhum domínio de extensão está configurado e todas as solicitações HTTPS usam o certificado padrão do listener. Siga a Etapa 2 para adicionar domínios de extensão para cada domínio e vincular os certificados de servidor correspondentes.Verifique a configuração de domínio de extensão usando a API. Chame a API
DescribeLoadBalancerHTTPSListenerAttributepara consultar o campoDomainExtensionse verificar o status da configuração de domínio de extensão. Se a resposta contiver"DomainExtension": [](array vazio), nenhum domínio de extensão está configurado e todas as solicitações de domínio usam o certificado padrão. Quando houver domínios de extensão configurados, verifique se os camposDomaineServerCertificateIdem cada entrada correspondem ao domínio e certificado esperados.Entenda a limitação de correspondência de certificado curinga. Se o certificado de servidor vinculado a um domínio de extensão for um certificado curinga (o domínio vinculado estiver no formato
*.example.com), observe o seguinte: quando vários domínios de extensão sob o mesmo listener HTTPS usam certificados curinga, apenas o primeiro certificado curinga é usado automaticamente para correspondência SNI. Os demais domínios de extensão devem ser vinculados a certificados individuais de domínio com correspondência exata; caso contrário, o certificado padrão do listener será retornado.
Documentos relacionados
Para encaminhar solicitações de diferentes caminhos de URL do mesmo nome de domínio para diferentes grupos de servidores de backend, consulte Use forwarding rules that are based on the same domain name but different paths to achieve precise traffic forwarding.
Para mais informações sobre regras de encaminhamento baseadas em nome de domínio e URL, consulte Forward requests based on domain names or URLs.
Para obter as instruções completas de configuração de domínio de extensão, consulte CLB Extension Domain Overview.