Como ter diversos sub/domínios no mesmo servidor? (Domínios virtuais com Apache2)

Neste tutorial você vai aprender como configurar vários domínios no mesmo servidor, bem como aplicar medidas simples de segurança.

Vou utilizar a distribuição mais recente do Debian 10 como o tutorial LAMP, e claro que antes de mais nada você precisa ter seu DNS configurado com seus subdomínios (hosts) apontando para o IP do seu servidor WEB. logo nossos requezitos são:
Instalação Debian 10 Buster LIMPA Passo-a-passo
Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster
Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”

No nossos exemplos vou configurar 4 subdomínios www, teste, phpipam e sistema. Com a ideia que seja um nosso site, um testador de banda, nosso querido phpipam onde documentamos os ips da nossa rede e sistema um subdomínio que vai ter alguma “sistema web qualquer”.

Tenha então em seu arquivo da configuração DNS autoritativa ( ex /var/cache/bind/master-aut/seudominio.net.br.hosts) seus subdomínios apontados, no nosso ex os IPs seriam o 45.80.50.2 e 2804:f123:bebe:cafe::2

Com seu Apache já instalado vamos algumas informações que são necessárias saber. O Apache mantém seus arquivos de configuração dentro da pasta /etc/apache2:

Há vários arquivos de texto simples e alguns subdiretórios de forma bem organizada e objetiva, os principais são:

apache2.conf: Este é o arquivo de configuração principal do servidor. Quase toda a configuração pode ser feita dentro desse arquivo, embora seja recomendado usar arquivos separados e designados para simplificar. Este arquivo irá configurar os padrões e ser o ponto central de acesso para o servidor ler os detalhes da configuração.

ports.conf: Este arquivo é usado para especificar as portas nas quais os hosts devem ouvir.

conf-[available, enabled]/: Este diretório é usado para controlar aspectos específicos da configuração do Apache. Por exemplo, costuma ser usado para definir opções de segurança.

sites-[available-enabled]/: este diretório contém todos os arquivos de hosts virtuais que definem cada subdmínio. Eles estabelecerão qual conteúdo será exibido para quais solicitações.

mods-[available, enabled]/: Esses diretórios são semelhantes em função aos diretórios de sites, mas eles definem módulos que podem ser carregados opcionalmente.

Como você pode ver alguns diretórios encontramos available e enabled, como o próprio nome diz o que esta em available são as configurações disponíveis e em enabled as configurações ativas. As configurações do Apache não ocorre em um único arquivo mas acontece através de um design modular onde novos arquivos podem ser adicionados e modificados conforme necessário.

Normalmente você após instalar o apache “corre” para o navegador e digita o endereço do seu IP para ver se seu servidor esta funcionando.

Mas agora que você conhece um pouquinho mais da arquitetura do diretório apache que tal saber porque ele mostra essa pagina default ao abrir seu IP no navegador?

Logo se é algo que esta carregando web deve estar dentro do diretório /etc/apache2/sites-enabled/ e é la que encontramos o 000-default.conf abra o mesmo e veja como ele é configurado

Esse é seu arquivo de configuração default

VirtualHost *:80 – Temos então nosso “primeiro e único” até o momento domínio virtual. Perceba q *:80 quer dizer qlqr ip na porta 80, entao se você tiver diversos endereços ips no mesmo servidor ele sempre vai interpretar. Se você tá experto notou o ServerName comentado, é ele que configuramos nossos hosts, logo se o mesmo não tem nenhum ServerName configurado o apache entende que tudo que jogarem para ele na porta 80 ele carregue essa pagina default, neste momento os 4 subdomínios vão esta carregando a mesma pagina.

ServerAdmin – E-mail do administrador

DocumentRoot – Diretório onde fica os arquivos. Padrão da instalação é o /var/www/html onde encontramos uma index.html que se você editar vai descobrir que é aquela página default. Vale lembrar que sempre que o arquivo se chamar index.html/php ele vai ser carregado ao acessar aquele diretório.

ErrorLog – Local onde ele vai registrar o logs de erros.

CustomLog – local onde guardará os logs de acesso.

Para cada subdomínio (host) vou criar um diretório novo dentro de /var/www/ e para ficar bem objetivo darei o nome da pasta o mesmo do host:

Criamos os diretórios

Se ainda não habilitou o mod_rewrite vamos habilitar, o mesmo utiliza um mecanismo baseado em regras de reescrita, ex o wordpress e phpipam usam o mesmo.

Vamos ao comando para habilita-lo:

Nosso primeiro arquivo vai representar o host www, ele vai ficar em sites-available ou seja ainda não está ativo (enable) e mais uma vez para ser objetivo vai ter o mesmo nome do host, porém ele deve terminar com .conf, logo www.conf

Agora vamos ter dois caras novos ServerName e ServerAlias qual vai esta apontando para nossos domínios. Como o ServerAlias pode ser apontado para diversos hosts.

Note que em ErrorLog e CustomLog eu adicionei um _www junto para que no log tenha apenas informações desse host.

Hora de habilitar! Usamos o comando a2ensite ele vai pegar o arquivo www.conf da pasta sites-available e criar um atalho dentro de sites-enabled

Para que as novas configurações do apache tenham efeito é necessário restartar o apache.

Para o Host teste vai ser o mesmo procedimento

Você já será capas de acessar os dois host tendo paginas diferentes.

Antes de prosseguir tem um detalhe que eu particularmente não gosto de deixar quaquer um ficar sabendo o que esta rodando e versões:
“Apache/2.4.38 (Debian) Server at teste.remontti.com.br Port 80”.
Por segurança recomendo remover a assinatura do servidor, para isso edite:

Altere as variáveis:
ServerTokens Prod
ServerSignature Off

Restar o apache2


Pronto ninguém precisa saber!

Para o phpipam vou fazer um pouco diferente, vamos focar na segurança, no exemplo vou permitir apenas “meu bloco do NOC” ter acesso (45.80.51.0/29 2804:f123:bebe:coca::/64), e diferente dos blocos permitidos vou direcionar ele para o “site da empresa”.

Por fim nosso host sistema, nesse vou ensinar como colocar uma senha do apache. No passado já tem um tutorial como proteger diretórios do apache de duas maneira, pelo arquivo de configuração do apache que vou demonstrar aqui e através do htaccess.

apachelogin

Primeiramente vamos gerar nosso arquivo de usuário/senha com htpasswd -c arquivo usuário (-c criar arquivo)

Digite sua senha para o usuário admin

Vou permanecer com a restrição por IP mas se você deseja remover basta remover o:

Que tal usar o letsencrypt e ter certificado valido para seus hosts?
Faça a instalação do letsencrypt

Antes de gerar nossa configuração pare o apache

Altere www.remontti.com.br para SEU.DOMINIO!

Você pode rodar também o comando:

O mesmo vai verificar todos os domínios virtuais e lheperguntar para quais você deseja gerar certificado!

Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Fonte:
https://httpd.apache.org/docs/2.4/howto/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *