Red Hat Training

A Red Hat training course is available for RHEL 8

1.5. Configuração de hosts virtuais baseados no nome Apache

Os hosts virtuais baseados em nomes permitem que o Apache sirva diferentes conteúdos para diferentes domínios que resolvam para o endereço IP do servidor.

O procedimento nesta seção descreve a criação de um host virtual para o domínio example.com e example.net com diretórios raiz de documentos separados. Ambos os hosts virtuais servem conteúdo HTML estático.

Pré-requisitos

  • Os clientes e o servidor web resolvem o domínio example.com e example.net para o endereço IP do servidor web.

    Observe que você deve adicionar manualmente estas entradas ao seu servidor DNS.

Procedimento

  1. Instale o pacote httpd:

    # yum instalar httpd
  2. Edite o arquivo /etc/httpd/conf/httpd.conf:

    1. Anexe a seguinte configuração de host virtual para o domínio example.com:

      <VirtualHost *:80>
          DocumentRoot "/var/www/example.com/"
          ServerName example.com
          CustomLog /var/log/httpd/example.com_access.log combined
          ErrorLog /var/log/httpd/example.com_error.log
      </VirtualHost>

      Estas configurações configuram o seguinte:

      • Todas as configurações da diretiva <VirtualHost *:80> são específicas para este host virtual.
      • DocumentRoot estabelece o caminho para o conteúdo da web do host virtual.
      • ServerName define os domínios para os quais este host virtual serve de conteúdo.

        Para definir vários domínios, adicione o parâmetro ServerAlias à configuração e especifique os domínios adicionais separados com um espaço neste parâmetro.

      • CustomLog define o caminho para o log de acesso do host virtual.
      • ErrorLog define o caminho para o registro de erros do host virtual.

        Nota

        O Apache utiliza o primeiro host virtual encontrado na configuração também para solicitações que não correspondem a nenhum domínio definido nos parâmetros ServerName e ServerAlias. Isto também inclui pedidos enviados para o endereço IP do servidor.

  3. Anexar uma configuração similar de host virtual para o domínio example.net:

    <VirtualHost *:80>
        DocumentRoot "/var/www/example.net/"
        ServerName example.net
        CustomLog /var/log/httpd/example.net_access.log combined
        ErrorLog /var/log/httpd/example.net_error.log
    </VirtualHost>
  4. Criar as raízes dos documentos para ambos os anfitriões virtuais:

    # mkdir /var/www/example.com/
    # mkdir /var/www/example.net/
  5. Se você definir caminhos nos parâmetros DocumentRoot que não estão dentro de /var/www/, defina o contexto httpd_sys_content_t em ambas as raízes do documento:

    # semanage fcontext -a -t httpd_sys_content_t "/srv/example.com(/.*)?"
    # restorecon -Rv /srv/example.com/
    # semanage fcontext -a -t httpd_sys_content_t "/srv/example.net(/.\*)?"
    # restorecon -Rv /srv/example.net/

    Estes comandos definem o contexto httpd_sys_content_t no diretório /srv/example.com/ e /srv/example.net/.

    Note que você deve instalar o pacote policycoreutils-python-utils para executar o comando restorecon.

  6. Abra a porta 80 no firewall local:

    # firewall-cmd --permanent --add-port=80/tcp
    # firewall-cmd --reload
  7. Habilite e inicie o serviço httpd:

    # systemctl enable --now httpd

Etapas de verificação

  1. Criar um arquivo de exemplo diferente em cada raiz de documento do host virtual:

    # echo "vHost example.com" > /var/www/example.com/index.html
    # echo "vHost example.net" > /var/www/example.net/index.html
  2. Use um navegador e conecte-se a http://example.com. O servidor web mostra o arquivo de exemplo do host virtual example.com.
  3. Use um navegador e conecte-se a http://example.net. O servidor web mostra o arquivo de exemplo do host virtual example.net.

Recursos adicionais