Como gerenciar hosts virtuais dinâmicos com Apache e o módulo MOD_VHOST_ALIAS

Como gerenciar hosts virtuais dinâmicos com Apache e o módulo MOD_VHOST_ALIAS

O servidor da Web Apache tem a capacidade de atender a vários sites do mesmo endereço IP, usando hosts virtuais. Cada host virtual pode ser configurado no arquivo de configuração do servidor principal ou, graças ao Incluir ou o Incluir optional
diretivas, em seu próprio dedicado. Quando o número de hosts virtuais aumenta, sua administração começa a se tornar problemática. Se a configuração deles for bastante semelhante, podemos gerenciá -los dinamicamente, graças ao mod_vhost_alias módulo. Neste tutorial, veremos como fazer isso.

Neste tutorial, você aprenderá:

  • O que é um host virtual Apache
  • Como verificar se o módulo mod_vhost_alias está ativado
  • Como carregar o módulo mod_vhost_alias na família de distribuições Debian e Red Hat
  • Como gerenciar hosts virtuais dinâmicos usando o módulo mod_vhost_alias

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Distribuição Independente
Programas Servidor da web apache
Outro Permissões de raiz
Convenções # - requer que os comandos linux -comidos sejam executados com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

Uma rápida visão geral do host virtual

Como já mencionamos na introdução, o Apache Web Server tem a capacidade de atender a vários sites usando hosts virtuais e a configuração DNS adequada. O abaixo é uma definição mínima, mas típica do host virtual:

 ServerName www.teste.Teste de LAN Serveralias.LAN documentroot/var/www/www.teste.LAN  


Esta configuração gerenciará solicitações de usuário para o www.teste.LAN endereço, que é o valor que definimos com o Nome do servidor diretiva, mas também para teste.LAN, qual é o Serveralias. Com o Documentroot Diretiva Definimos o diretório base do qual os arquivos associados ao host virtual devem ser servidos, o que neste caso é /var/www/www.teste.LAN.

Um host virtual pode ser definido no arquivo de configuração do servidor principal (/etc/httpd/conf/httpd.conf na família Red Hat of Distribuições, /etc/apache2/apache2.conf nos sistemas Debian e seus derivados), ou pode ser escrito em seu próprio arquivo e incluído na configuração principal. De fato, se dermos uma olhada na configuração do Apache nas principais distribuições Linux, podemos ver que os arquivos de hosts virtuais estão incluídos através do Incluir optional Diretiva de algum diretório específico.

Em Fedora e distribuições relacionadas, por exemplo, encontramos a seguinte configuração no final do arquivo:

# Carregar arquivos de configuração no "/etc/httpd/conf.diretório D ", se houver. Incluir opcional conf.d/*.conf 

Em Debian, em vez disso:

# Inclua as configurações do host virtual: Incluir sites-opcionais-habilitado/*.conf 

Podemos notar que o caminho do qual os arquivos devem ser incluídos é em relação à raiz do servidor. O Incluir optional A diretiva é usada para incluir os arquivos do host virtual que devem ser nomeados com o .conf sufixo. Aqui o Incluir Diretiva também pode ser usada; Qual é a diferença entre os dois? Ambos funcionam exatamente da mesma maneira, o Incluir optional A diretiva, no entanto, não causa um erro quando os curingas são usados ​​(como neste caso) e nenhuma correspondência é encontrada, ou se um caminho não existir, em geral.

Para que esta configuração funcione, uma entrada DNS adequada também deve ser configurada. Se funcionar localmente, no entanto, poderíamos simplesmente adicionar uma linha no /etc/hosts arquivo. Por exemplo:

127.0.0.1 www.teste.LAN 

Quando as configurações de hosts virtuais começam a aumentar, sua administração pode se tornar facilmente problemática. Uma possível solução para esse problema é usar hosts virtuais gerados dinamicamente. Vamos ver como fazer isso com o mod_vhost_alias módulo.

Carregando o módulo mod_vhost_alias

A primeira coisa que precisamos fazer é verificar se o mod_vhost_alias O módulo está ativado. O comando que queremos executar para esse fim depende da distribuição que estamos usando. Em Fedora e outra distribuição da família Red Hat, podemos usar o seguinte:

$ httpd -m | grep -i vhost_alias 

Em Debian, em vez disso:

$ apachectl -m | grep -i vhost_alias 

Passando pelo -M opção para o httpd (ou apachectl) Comando, obtemos uma lista de módulos estáticos e compartilhados carregados; Tanque a saída para o grep, podemos verificar se o módulo de que precisamos está nele. Caso o módulo não esteja carregado, no Debian e em seus derivados, podemos executar o seguinte comando:

$ sudo a2enmod vhost_alias && sudo systemctl reiniciar apache2 


O A2ENMOD O comando cria um link simbólico para o /etc/apache2/mods-anabilable/mod_vhost_alias.então Arquive no /etc/apache2/mods-habilitado diretório (da mesma forma que o que A2ensite O comando faz para configurações de hosts virtuais), que é de onde os módulos são carregados.

Na família Red Hat of Distribution, a lista de módulos de base carregados está no /etc/httpd/conf.módulos.D/00-BASE.conf arquivo. Cada módulo é carregado com o LoadModule diretivo. Se por algum motivo o vhost_alias A linha do módulo (67) é comentada, basta remover o comentário, salvar a modificação e recarregar o serviço httpd:

$ sudo systemctl reiniciar httpd 

Depois que o módulo estiver ativado, podemos prosseguir com a configuração real.

Criando hosts virtuais dinâmicos

A configuração que estamos criando é baseada no fato de que o mod_vhost_alias O módulo armazena os componentes separados por pontos do nome do host virtual solicitado dentro de algumas variáveis ​​que podemos fazer referência e interpolar na string que usamos para definir a raiz do documento do host virtual. Se tomarmos o www.teste.LAN Host virtual como exemplo, teremos:

  • %0: todo o nome do host virtual
  • %1: “www”
  • %2: “Teste”
  • %3: “LAN”

Números negativos também podem ser usados, por exemplo, teremos:

  • %-1 A última parte do nome, neste caso "LAN"
  • %-2 A penúltima parte, neste caso "teste"

É até possível especificar todos os componentes do nome do host virtual de uma certa porta em diante ou para trás. Por exemplo, %2+ significa "da segunda parte em diante" e %-2+ 'causa o penúltimo componente e todos os componentes que o precedem para ser incluído.

Supondo que queremos usar o /var/www/ Diretório como base de todos os nossos hosts virtuais, poderíamos criar a seguinte configuração em um arquivo, vamos chamá -lo dinâmico_vhost.conf:

 UsecanonicalName off VirtualDocumentRoot "/var/www/%-2"  

Vamos explicar a configuração acima. Primeiro de tudo, usamos o Nome de Usecanonical Diretiva e defina -a como "OFF": fizemos isso para ter certeza de que o nome do servidor é retirado do cabeçalho "Host:" na solicitação HTTP. Nós do que usamos o VirtualDocumentroot diretivo. Esta diretiva é necessária para definir um caminho dinâmico para a raiz do documento de um host virtual, pelo uso das variáveis ​​que vimos acima, que são avaliadas ao gerenciar uma solicitação.

Quando o www.teste.LAN host virtual é solicitado, automaticamente os arquivos a serem servidos para ele serão pesquisados ​​dentro do /var/www/teste diretório. O uso do %-2 Índice negativo tem a vantagem de que a configuração funcionará com www.teste.LAN e para teste.LAN, já que funciona para trás.

Este é obviamente apenas um exemplo do que pode ser realizado usando o mod_vhost_alias módulo, e você pode criar a configuração que se adapta melhor a você.



Desvantagens

Esse tipo de configuração é bastante prático se todo o host virtual que estamos gerenciando for bem semelhante e exigir a mesma configuração, mas tem suas desvantagens, o que pode ser bastante relevante, dependendo da situação. Primeiro de tudo, não será possível especificar configurações específicas do VirtualHost, se não com o uso de .arquivos htaccess); Esse tipo de configuração também causará problemas se usados ​​em conjunto com configurações de host virtuais padrão. Finalmente, os pedidos para todos os hosts virtuais serão registrados no mesmo arquivo.

Conclusões

O servidor da Web Apache pode servir vários sites e recursos de uma única máquina graças ao uso de hosts virtuais. Quando o número de hosts virtuais começa a aumentar em número, pode se tornar difícil gerenciá -los se cada um tiver seu próprio arquivo/seção de configuração. Se eles tiverem configurações semelhantes, podemos alternar esse problema usando hosts virtuais gerados dinamicamente, aproveitando o mod_vhost_alias módulo.

Neste artigo, vimos como verificar se este módulo está ativado e como habilitá -lo nas famílias de distribuições Debian e Red Hat. Também vimos como os componentes do nome do host virtual são armazenados em variáveis ​​e como usá -las para criar hosts virtuais dinâmicos. Finalmente, vimos quais são as desvantagens de usar esta configuração.

Tutoriais do Linux relacionados:

  • Como migrar o Apache para o nginx convertendo o VirtualHosts para…
  • Firefox no Linux - sua conexão não é segura
  • Comparando Linux Apache Prefork vs Worker MPMS
  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como instalar o Ubuntu 20.04 no VirtualBox
  • Lista das melhores ferramentas Kali Linux para testes de penetração e…
  • Apache IP e hosts virtuais baseados em nome explicados
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?