Objetivos de aprendizado
Depois de ler este artigo, você vai conseguir:
- Entender o que é um subdomínio e como ele aparece no DNS
- Criar um subdomínio com um registro CNAME ou A
- Decidir entre subdomínio e subpasta para o seu projeto
Você registra meusite.com.br uma vez. Depois disso, pode criar www.meusite.com.br, api.meusite.com.br e painel.meusite.com.br sem registrar nada novo. Cada um desses nomes extras é um subdomínio.
Subdomínios são a forma padrão de separar partes de um projeto: o site, a API, a documentação, o ambiente de testes. Cada parte pode rodar em um servidor diferente, com seu próprio certificado e suas próprias regras.
O que é um subdomínio?#
Um subdomínio é um nome criado à esquerda de um domínio existente. No DNS, o nome se lê da direita para a esquerda, e cada pedaço separado por ponto é um rótulo:
api . meusite . com . br
| | | |
| | | TLD (nível mais alto)
| | sufixo público (com.br)
| domínio registrado
subdomínioO domínio registrado (meusite.com.br) é a parte que você paga para registrar. Tudo que fica à esquerda dele é seu para organizar. Os conceitos vêm das RFCs 1034 e 1035, que descrevem o DNS como uma árvore em que cada nó delega os níveis abaixo.
Como o DNS trata um subdomínio?#
Cada subdomínio pode ter registros DNS próprios. O DNS de api.meusite.com.br não precisa apontar para o mesmo lugar que www.meusite.com.br.
Um arquivo de zona simplificado:
meusite.com.br. 3600 IN A 203.0.113.10
www.meusite.com.br. 3600 IN CNAME meusite.com.br.
api.meusite.com.br. 3600 IN A 203.0.113.20
blog.meusite.com.br. 3600 IN CNAME minha-conta.exemplo-blog.com.Aqui o site e a API ficam em IPs diferentes, e o blog é servido por um provedor externo. Você pode conferir o resultado com dig:
dig +short api.meusite.com.br AOs limites de tamanho vêm da RFC 1035: cada rótulo tem até 63 caracteres e o nome completo, até 255 octetos na forma binária (253 caracteres em texto). A sintaxe recomendada para hostnames (seção 2.3.1) usa letras, números e hifens.
Como criar um subdomínio?#
No painel de DNS do provedor que responde pelo seu domínio:
- Escolha o tipo de registro. Se o destino é um IP, use
A(IPv4) ouAAAA(IPv6). Se o destino é outro nome, como o de um serviço externo, useCNAME. - No campo de nome, escreva só o prefixo (
api). A maioria dos painéis completa o domínio sozinha. - Preencha o valor (o IP ou o nome de destino) e salve.
- Aguarde o TTL expirar nos caches. Veja como funciona a propagação de DNS.
Um detalhe que pega muita gente: o CNAME não pode coexistir com outros registros no mesmo nome (RFC 1912, seção 2.4). Como o domínio raiz (meusite.com.br) sempre tem registros NS e SOA, ele não aceita CNAME. Subdomínios aceitam. Alguns provedores de DNS oferecem um registro proprietário (ALIAS ou ANAME) que imita CNAME na raiz, mas isso não faz parte do padrão.
E o subdomínio curinga (wildcard)?#
Um registro *.meusite.com.br responde por qualquer nome sob o domínio que não exista na zona (RFC 4592). É útil para sistemas em que cada cliente ganha um endereço, como cliente1.meusite.com.br. O custo é que nomes digitados errado também resolvem, e o certificado TLS precisa cobrir os nomes usados. Veja como funciona o SSL/TLS.
Subdomínio ou subpasta?#
Subdomínio (blog.meusite.com) |
Subpasta (meusite.com/blog) |
|
|---|---|---|
| Servidor | Pode ser outro | Mesmo host |
| DNS | Registro próprio | Nenhum registro extra |
| Certificado TLS | Precisa cobrir o nome | Já coberto pelo do domínio |
| Cookies | Compartilhados só se o cookie declarar o domínio pai | Compartilhados por padrão |
| Indicado para | API, painel, ambiente de testes, serviço de terceiros | Conteúdo do mesmo site |
Use subdomínio quando a parte do projeto roda em outro lugar, usa outra tecnologia ou precisa de isolamento. Use subpasta quando é conteúdo do mesmo site e você quer tudo sob um único host.
Quando o "subdomínio" não é seu?#
com.br, co.uk e github.io são sufixos públicos: a Public Suffix List (publicsuffix.org) registra onde termina o "domínio registrável". Por isso meusite.com.br é um domínio seu, e com.br não. Navegadores usam essa lista para impedir que um site defina cookies para todos os outros sob o mesmo sufixo.
Quando um serviço entrega a você seuapp.provedor.com, isso é um subdomínio do provedor, não seu. Você não controla o DNS dele e, para ter um nome próprio, precisa apontar um domínio seu. Veja como usar um domínio personalizado e como apontar o domínio para a sua aplicação.
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. Serve para testar e para receber webhooks (o Telegram, por exemplo, exige HTTPS).
Para usar api.meusite.com.br, você precisa de domínio personalizado, disponível a partir do plano Standard. No seu registrador, você cria os registros DNS que o painel mostra e acompanha o status da validação em tempo real. O TLS é automático. O domínio continua registrado em seu nome no seu registrador, e a zona DNS continua sob o seu controle, no seu provedor de DNS.
Se o mesmo domínio precisa ser servido por mais de uma aplicação, use o load balancing de domínio personalizado, com round-robin e failover passivo. Veja os detalhes em Domínios e em Load balancing.
Rede
Domínio próprio, TLS automático e CDN global para o seu app
Perguntas frequentes
Subdomínio é pago?
Normalmente não. Você registra o domínio principal e cria quantos subdomínios quiser no painel de DNS, sem custo por subdomínio. A cobrança é do registro do domínio, não dos nomes criados abaixo dele.
Qual a diferença entre subdomínio e subpasta?
Subdomínio é blog.meusite.com e pode apontar para outro servidor. Subpasta é meusite.com/blog e fica no mesmo host. Para o DNS são coisas diferentes: só o subdomínio tem registros próprios.
Posso usar CNAME no domínio raiz?
Não pelo padrão do DNS: o CNAME não pode coexistir com outros registros do mesmo nome, e o domínio raiz sempre tem NS e SOA. Use registro A ou AAAA, ou o ALIAS/ANAME, se o seu provedor de DNS oferecer.
Quantos níveis de subdomínio posso ter?
Cada rótulo tem até 63 caracteres e o nome completo até 253 caracteres no formato de texto. Dentro disso, você pode encadear níveis, como v2.api.meusite.com.br.
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.