Objetivos de aprendizado
Depois de ler este artigo, você vai conseguir:
- Entender o que cada tipo de registro devolve na resolução
- Saber por que o CNAME não funciona no domínio raiz e o que usar no lugar
- Escolher o registro certo para raiz, www e subdomínios
Na hora de apontar um domínio para uma hospedagem, o painel de DNS pergunta o tipo do registro. A escolha errada produz erros confusos: o painel recusa o cadastro, o site some ou o e-mail para de chegar.
A decisão é pequena, mas uma regra do padrão DNS pega muita gente. Entender de onde ela vem resolve quase todos os casos de raiz, www, subdomínio e e-mail.
O que é um registro A?#
Um registro A associa um nome a um endereço IPv4. Quando alguém consulta app.meusite.com.br, o DNS responde com algo como 203.0.113.10 e o navegador conecta nesse IP. O equivalente para IPv6 é o registro AAAA.
dig app.meusite.com.br A +short
203.0.113.10É o tipo mais simples e o mais previsível: uma consulta, uma resposta. O custo é que o IP fica gravado na sua zona. Se a hospedagem mudar de IP, você precisa editar o registro em todo nome que aponta para ele.
O que é um CNAME?#
CNAME significa "nome canônico". O registro diz que um nome é um alias de outro: quem consulta o alias recebe o nome de destino e segue a consulta até achar um IP.
dig www.meusite.com.br CNAME +short
meusite.com.br.O ponto final no valor indica um nome completo (FQDN). Sem ele, alguns painéis acrescentam o domínio ao valor e o destino fica errado.
A vantagem é a manutenção: se o destino trocar de IP, o seu alias acompanha sem você mexer no DNS. A desvantagem é uma consulta a mais na resolução, que o cache costuma absorver durante o TTL.
Qual a diferença entre registro A e CNAME na prática?#
| Critério | Registro A | CNAME |
|---|---|---|
| Aponta para | Um endereço IPv4 | Outro nome (hostname) |
| Se o IP do destino mudar | Você edita o registro | Acompanha sozinho |
| Consultas na resolução | Uma | Pode exigir uma extra, para resolver o destino |
| Pode ficar no domínio raiz | Sim | Não |
| Convive com MX, TXT, NS no mesmo nome | Sim | Não |
| Bom para | Raiz, IP fixo e estável | Subdomínios e www apontando para um serviço |
Não há vencedor universal: o que decide é o que a hospedagem entrega (um IP ou um nome) e onde o registro vai ficar.
Por que o CNAME não funciona no domínio raiz?#
A RFC 1034 define que, se existe um CNAME num nome, nenhum outro dado deve existir nesse mesmo nome. A RFC 2181 reforça a regra, e a RFC 1912 resume: um CNAME não pode coexistir com nenhum outro dado.
O domínio raiz (meusite.com.br, sem prefixo, também chamado de apex) sempre tem registros SOA e NS, e normalmente também MX e TXT. Um CNAME ali entraria em conflito com todos eles. Os painéis de DNS costumam recusar o cadastro, e quando aceitam o resultado é imprevisível: a RFC 1912 avisa que o BIND recusa os outros dados do nome quando vê o CNAME, então os NS são ignorados e os hosts do domínio ficam inalcançáveis.
Alguns provedores contornam isso com CNAME flattening, também chamado de ALIAS ou ANAME. O próprio provedor resolve o nome de destino e responde com os IPs como se fossem registros A. É um recurso do provedor de DNS, não do padrão, e o nome varia: a Cloudflare chama de flattening, outros provedores usam ALIAS ou ANAME. Se o seu não tiver, use A na raiz.
E o e-mail, como o CNAME interfere?#
O CNAME causa dois problemas diferentes no e-mail.
CNAME no mesmo nome que o MX. Como o CNAME não convive com outros dados, criar um CNAME na raiz entra em conflito com o MX e o TXT (SPF, verificações). O e-mail do domínio deixa de chegar. É a causa mais comum de "mexi no site e o e-mail parou".
MX apontando para um CNAME. A RFC 2181 (seção 10.3) diz que o destino de um MX ou NS não pode ser um alias, e a RFC 1912 também desaconselha. O valor do MX deve ser um nome com registro A ou AAAA.
Por isso, se o domínio recebe e-mail, nunca coloque CNAME na raiz e aponte o MX sempre para um nome que resolva direto para IP.
Quando usar cada um?#
- Domínio raiz (
meusite.com.br): registro A, ou ALIAS/ANAME/flattening se o seu provedor tiver. www: CNAME para a raiz (meusite.com.br.) ou para o nome indicado pela hospedagem. Se preferir, um A com o mesmo IP.- Subdomínios (
app,api,bot): CNAME quando a hospedagem fornece um nome de destino. É a opção que melhor sobrevive a trocas de IP. Veja o que é um subdomínio. - Hospedagem que informa só um IP: registro A, em qualquer nome.
- Nome que também precisa de MX ou TXT: registro A (ou AAAA), nunca CNAME.
Exemplo de zona para um site na raiz com www e app:
| Tipo | Nome | Valor | TTL |
|---|---|---|---|
| A | @ |
203.0.113.10 |
300 |
| CNAME | www |
meusite.com.br. |
300 |
| CNAME | app |
destino-da-hospedagem.exemplo. |
300 |
Os valores são fictícios: use os que a sua hospedagem informar. O passo a passo completo está em como apontar um domínio para sua hospedagem, e o catálogo de tipos em o que são registros DNS.
Como confirmar o que está publicado?#
Consulte o tipo de registro diretamente:
dig meusite.com.br A +short
dig www.meusite.com.br CNAME +short
dig meusite.com.br MX +shortPara ver a cadeia inteira até o IP, rode dig www.meusite.com.br: a seção ANSWER mostra o CNAME seguido do A. Se um mesmo nome mostrar CNAME e outros tipos ao mesmo tempo, a zona está inconsistente e precisa de correção.
Depois de mudar um registro, o valor antigo pode continuar visível até o TTL expirar nos resolvedores.
Como fazer isso na Square Cloud#
Toda aplicação web na Square Cloud ganha um subdomínio *.squareweb.app com HTTPS, em todos os planos, sem você criar registro nenhum. Domínio próprio fica disponível a partir do plano Standard.
Você adiciona o domínio no painel, que mostra os registros DNS necessários, e cria esses registros no seu registrador ou provedor de DNS. O destino é um CNAME para cname.squareweb.app, mais um TXT de validação. O painel exibe o status da validação em tempo real e emite o TLS automaticamente.
Como não há IP fixo para usar num registro A, o domínio raiz funciona quando o seu provedor de DNS aceita CNAME na raiz (flattening ou ALIAS), como visto acima. Para o www, o recomendado é um redirect para o domínio principal. O domínio continua registrado em seu nome, e a zona DNS fica com você.
Se várias aplicações atendem o mesmo domínio, veja também o load balancing. Os detalhes estão na página de domínios.
Rede
Domínio próprio, TLS automático e CDN global para o seu app
Perguntas frequentes
Posso usar CNAME no domínio raiz (exemplo.com.br)?
Pelo padrão do DNS, não. A raiz já tem registros SOA e NS, e um CNAME não pode coexistir com outros dados no mesmo nome. Use um registro A, ou um provedor de DNS com CNAME flattening (também chamado de ALIAS ou ANAME).
O CNAME é mais lento que o registro A?
Em teoria sim, porque o resolvedor pode precisar de uma consulta extra para chegar ao IP. Na prática a resposta fica em cache pelo TTL, então a diferença quase nunca é perceptível para o usuário.
Posso ter um CNAME e um registro MX no mesmo nome?
Não. O CNAME não pode coexistir com nenhum outro tipo de registro no mesmo nome, e isso inclui MX e TXT. É o motivo pelo qual um CNAME na raiz quebra o e-mail do domínio.
Um CNAME pode apontar para outro CNAME?
Pode, formando uma cadeia, mas é melhor evitar. Cada salto adiciona uma consulta e mais um ponto de falha.
Se o IP da hospedagem mudar, o que eu preciso fazer?
Com registro A, você edita o IP manualmente em cada nome que aponta para ele. Com CNAME, a hospedagem troca o IP do nome de destino e o seu domínio acompanha sozinho.
Mais em Rede e domínios
Ver todos os 27 artigos- O que é load balancer (balanceamento de carga)Load balancer é o componente que distribui requisições entre vários servidores. Veja como funciona, os algoritmos, as camadas 4 e 7 e um exemplo com nginx.
- Registros DNS: A, CNAME, MX e TXT explicadosRegistros DNS são as instruções de uma zona que dizem para onde um nome aponta. Entenda A, AAAA, CNAME, MX, TXT, NS e CAA com exemplos e comandos dig.
- Como apontar um domínio para sua hospedagemPara apontar um domínio para sua hospedagem, crie um registro CNAME (ou A) no DNS do seu registrador. Veja o passo a passo, como testar e os erros comuns.
- Cabeçalho Cache-Control: quanto tempo o navegador e a CDN guardam um arquivoCache-Control é o cabeçalho HTTP que define quanto tempo navegador e CDN guardam uma resposta. Veja max-age, no-cache, immutable e receitas por tipo de arquivo.