Você tem um servidor com um único endereço IP público, mas precisa hospedar vários domínios ou subdomínios? O que você faria? Esse cenário pode ser confuso se você é um iniciante. Mas não se preocupe, este tutorial vai te ajudar, para que você possa servir um subdomínio NGINX e vários domínios.
Neste tutorial, você aprenderá como servir efetivamente subdomínios NGINX ou vários domínios em um servidor com um único endereço IP!
Se você está pronto, vamos começar!
Pré-requisitos
Este tutorial inclui demonstrações práticas, mas não requer muitos pré-requisitos e pressupõe que você tenha um Ubuntu Server LTS com SSH habilitado e NGINX instalado. As demonstrações deste tutorial são baseadas no Ubuntu Server LTS 20.04.1.
Configurando Registros DNS
Antes de poder servir subdomínios NGINX ou vários domínios, você precisará adicionar um registro A em um painel de controle de DNS. O registro A vincula e aponta todos os domínios e subdomínios para um único endereço IP, permitindo que os navegadores encontrem seu site.
1. Abra seu navegador da web favorito e faça login no painel de controle do seu DNS.
2. Clique em Adicionar Registro para começar a adicionar registros A. Seu navegador será redirecionado para uma página onde você configurará as configurações de DNS para seu domínio e subdomínios.

Agora, configure as configurações de DNS com o seguinte:
Selecione o registro A no campo Tipo.
Insira @ no campo Host e o IP do seu servidor no campo Valor.
Selecione o valor desejado no campo TTL, depois clique no botão Confirmar para salvar as configurações.
Repita o mesmo processo para outros subdomínios.

A página final de Configurações de DNS se parece com a abaixo.

Seu painel de controle de registros DNS pode variar em funcionalidade e design, mas os mesmos princípios se aplicarão a todos.
Configurando Diretórios da Web para Domínio e Subdomínio NGINX
Agora que você adicionou registros A para seu domínio e subdomínios, é hora de configurar seus diretórios da web. O NGINX vem com um arquivo de host virtual padrão e está configurado para servir um diretório da web localizado em /usr/share/nginx/html.
Você criará um diretório da web separado para cada domínio dentro da raiz de documento padrão do NGINX (/var/www/html).
1. Primeiro, abra o seu terminal e execute os comandos abaixo para criar diretórios web para todos os domínios e subdomínios. Fazendo isso, separa, organiza e isola os arquivos para cada site.
2. Em seguida, execute o comando chown
para alterar recursivamente (-R
) a propriedade de cada diretório criado na etapa um para o usuário e grupo www-data
. Você está alterando a propriedade de cada diretório para o usuário e grupo www-data
, já que o NGINX é executado como um usuário www-data
.
3. Crie um arquivo chamado index.html no seu editor de código preferido e, em seguida, copie/cole o código abaixo para o arquivo index.html. Salve o arquivo dentro do diretório web principal dos seus domínios (/var/www/html/awstutorial.net).
O código HTML abaixo exibe uma mensagem que diz “Parabéns! O site awstutorial.net está funcionando!” quando o arquivo index.html é aberto em um navegador da web.
4. Finalmente, crie o mesmo index.html nos diretórios /var/www/html/web1.awstutorial.net e /var/www/html/web2.awstutorial.net. Mas substitua awstutorial.net
por web1.awstutorial.net
e web2.awstutorial.net
no código de cada index.html conforme necessário.
Configurando o Host Virtual para Domínio e Subdomínios NGINX
Você já possui uma página index.html para o seu domínio e subdomínios para serem servidos por meio de um servidor web NGINX. O próximo passo é criar um arquivo de configuração de host virtual do NGINX para cada domínio para servir as páginas HTML.
1. Crie um arquivo de configuração de host virtual NGINX chamado awstutorial.net no seu editor de código preferido e, em seguida, copie/colecione o código abaixo para esse arquivo. Salve o arquivo no diretório /etc/nginx/sites-available/.
O código abaixo controla o comportamento do seu servidor, como o nome do servidor e a página inicial quando um usuário tenta acessar seu domínio.
2. Em seguida, execute o seguinte comando nginx
para verificar (-t
) o arquivo de configuração do NGINX em busca de erros de sintaxe.
Se nenhum erro de sintaxe for encontrado no arquivo de configuração do NGINX, você obterá a seguinte saída.

3. Em seguida, execute o comando abaixo para criar um link simbólico (ln -s
) do diretório /etc/nginx/sites-available para o diretório /etc/nginx/sites-enabled/. Esse comando habilita o arquivo de configuração do host virtual awstutorial.net.
Os formatos sites-available e sites-enabled são padrão em uma instalação NGINX no Ubuntu, mas outras distribuições podem usar um padrão diferente.
4. Repita os passos um a três para criar arquivos de configuração de host virtual NGINX nomeados web1.awstutorial.net e web2.awstutorial.net.
Altere as seguintes linhas em cada arquivo de configuração de host virtual NGINX:
- Substitua a linha
root /var/www/html/awstutorial.net
pelo diretório raiz de cada subdomínio (root /var/www/html/web1.awstutorial.net
eroot /var/www/html/web2.awstutorial.net
). - Substitua a linha
server_name awstutorial.net
pelo nome de cada subdomínio (server_name web1.awstutorial.net
eserver_name web2.awstutorial.net
).
5. Agora, execute os comandos sudo ln
abaixo como fez no passo três para habilitar os arquivos de configuração do host virtual.
6. Execute o comando systemctl
abaixo para reiniciar o serviço NGINX (restart nginx
) e aplicar todas as alterações de configuração.
7. Por fim, acesse os URLs do domínio e subdomínios em seu navegador para testar se os sites estão funcionando corretamente.
Se o domínio e subdomínios carregarem, você verá uma mensagem semelhante à abaixo.

Configurando o HTTPS no Domínio e Subdomínio do NGINX
Você configurou e testou com sucesso um domínio e subdomínios do NGINX no protocolo HTTP, o que é ótimo. No entanto, é necessário proteger a conexão do seu domínio e subdomínios ativando o HTTPS. Como? Com um certificado que você obterá de uma Autoridade de Certificação, como Let’s Encrypt SSL.
1. Primeiro, execute o comando abaixo para instalar o pacote de software Certbot (apt-get install certbot
). O Certbot permite baixar um certificado SSL para o seu domínio e subdomínios.
2. Em seguida, execute o comando certbot
abaixo para baixar um certificado SSL (certonly
) para o seu domínio (-d awstutorial.net
). Observe que você concorda com os termos de serviço (--agree-tos
) inserindo seu endereço de e-mail (--email
).
Substitua o e-mail pelo seu próprio.
3. Digite ‘1’ para selecionar o plugin do servidor web NGINX (nginx) para autenticação com a ACME CA, conforme mostrado abaixo.

Após selecionar o plugin do servidor web NGINX, você verá o progresso do download do certificado SSL para o seu domínio (awstutorial.net).
Por padrão, os certificados SSL da Let’s Encrypt são armazenados no diretório /etc/letsencrypt/live/.

4. Agora execute cada comando abaixo, como fez no passo dois, para baixar certificados SSL para os subdomínios restantes (web1.awstutorial.net
e web2.awstutorial.net
).
5. Por fim, execute o comando ls
abaixo para listar todos os certificados SSL no diretório /etc/letsencrypt/live/ que contêm (*
) o awstutorial.net
em seus nomes. Isso permite verificar a existência dos certificados SSL.
Abaixo, você verá os certificados SSL para o seu domínio e subdomínios.

Configurando o Virtual Host do NGINX para Usar Certificados SSL
Neste ponto, você já possui certificados SSL à sua disposição. Mas como você os utiliza para proteger seu domínio e subdomínios? Você definirá o caminho dos certificados no bloco server
de cada arquivo de configuração de host virtual NGINX.
1. Abra o arquivo de configuração do host virtual NGINX para awstutorial.net localizado no diretório /etc/nginx/sites-available/
no seu editor de código preferido.
2. Substitua o conteúdo do arquivo pelo código abaixo, onde você define o caminho do certificado SSL do seu domínio e o protocolo SSL (em Caminho do certificado SSL
).
3. Repita o mesmo processo (passos um a dois) para os arquivos de configuração de host virtual restantes (web1.awstutorial.net e web2.awstutorial.net). Mas certifique-se de substituir o caminho do certificado SSL pelo caminho do certificado do seu subdomínio (em Caminho do certificado SSL
).
4. Agora, execute novamente o comando systemctl
abaixo para reiniciar o serviço NGINX e aplicar as alterações de configuração.
5. Por fim, navegue para os URLs do seu domínio e subdomínio em seu navegador da web. Mas desta vez, em vez do protocolo HTTP, use HTTPS para verificar se eles funcionam.
Abaixo, você pode ver um ícone de cadeado na barra de endereço, o que indica que o site está seguro com seu certificado SSL.

Conclusão
Neste tutorial, você aprendeu como servir um subdomínio NGINX ou vários domínios configurando um arquivo de configuração de host virtual. Você também abordou a segurança de seus domínios com um certificado SSL que você também definiu no arquivo de configuração de host virtual.
Agora, por que não usar essa configuração em um ambiente de produção, como hospedar vários aplicativos em um único servidor e fornecer hospedagem na web acessível?