Servidor Apache hospedando diversos sites com e sem SSL

Neste artigo descrevo como utilizar um mesmo servidor Web Apache para hospedar diversos sites que utilizam, ou não, SSL. As configurações apresentadas foram testadas no CentOS versões 5.9 e 6.3, mas funcionarão normalmente também para qualquer distribuição, apenas realizando pequenos ajustes.

[ Hits: 29.075 ]

Por: Celso S. Faria em 22/03/2013


Sites sem SSL (HTTP)



Assumindo que o Apache esteja configurado para atender às requisições na porta 80 (linha "Listen 80"), edite o arquivo "httpd.conf"e certifique-se que a linha abaixo não esteja comentada:

NameVirtualHost *:80


Uma sessão de VirtualHost, como abaixo, deve ser inserida no final do arquivo para cada site hospedado no servidor, adaptando cada linha de acordo com o nome do site (atenção ao DocumentRoot que é diferente para cada site).

Neste exemplo, utilizaremos os sites com números ímpares: www.site1.com e www.site3.com:

<VirtualHost *:80>
      ServerAdmin webmaster@site1.com
      DocumentRoot /var/www/site1.com
      ServerName site1.com
      ServerAlias www.site1.com
      ErrorLog /var/log/httpd/site1.com-error_log
      CustomLog /var/log/httpd/site1.com-access_log common
</VirtualHost>

<VirtualHost *:80>
      ServerAdmin webmaster@site3.com
      DocumentRoot /var/www/site3.com
      ServerName site3.com
      ServerAlias www.site3.com
      ErrorLog /var/log/httpd/site3.com-error_log
      CustomLog /var/log/httpd/site3.com-access_log common
</VirtualHost>


Observe que as sessões são customizadas para cada site, de forma que seja possível identificar os arquivos de cada site.

O Apache identificará cada site pela instrução ServerAlias, ou seja, "www.site1.com" e "www.site3.com".

Para verificar se a configuração está correta, digite:

# httpd -S

A saída deverá ser como abaixo:

VirtualHost configuration:
wildcard NameVirtualHosts:
*:80                   is a NameVirtualHost
         default server site1.com (/etc/httpd/conf/httpd.conf:1012)
         port 80 namevhost site1.com (/etc/httpd/conf/httpd.conf:1012)
         port 80 namevhost site3.com (/etc/httpd/conf/httpd.conf:1030)
Syntax OK

O site default a ser apresentado (se acessado por http://IP ou hostname do servidor hospedeiro) será o "site1.com".

Isto indica que a sintaxe da configuração está correta e o Apache está pronto para assumi-la.

Carregue o Apache, com:

# service httpd start
Ou:
# /etc/init.d/httpd start

Abra seu navegador favorito e digite o nome de um dos sites ("www.site1.com"ou "www.site3.com"), veja que o conteúdo apresentado é referente ao site que você solicitou.

Página anterior     Próxima página

Páginas do artigo
   1. Considerações iniciais
   2. Sites sem SSL (HTTP)
   3. Sites com SSL (HTTPS)
Outros artigos deste autor

Integrando Nagios e Google Maps

Nagios - Configurando níveis de acesso e autenticação centralizada no Active Directory

Restauração e registro do RedHat após utilização de repositórios CentOS

Apache Mod_Proxy como Front-End de acesso e balanceamento de diversas aplicações web

Openfire integrado em uma floresta Active Directory

Leitura recomendada

Anon-Proxy no Debian Lenny

Entendendo TCP/IP (Parte 3) - Resolução de nomes

Transformando o Linux em um Access Point com hostapd

Softmodem compatível com Smart Link em kernel Linux 2.6.24 ou superior

Postfix autenticando com o SASL no Conectiva 8

  
Comentários
[1] Comentário enviado por danniel-lara em 22/03/2013 - 09:39h

Parabéns pelo Artigo muito bom mesmo

[2] Comentário enviado por MarceloTheodoro em 22/03/2013 - 11:46h

Artigo veio em boa hora. :)
Valeu!!

[3] Comentário enviado por djcelsodub em 22/03/2013 - 12:38h

Daniel e Marcelo:

Obrigado por seus comentários.
Fico feliz em saber que o artigo ajudou.

Celso Faria
Americana/SP

[4] Comentário enviado por Teixeira em 28/03/2013 - 19:29h

Parabéns pelo artigo.

[5] Comentário enviado por djcelsodub em 29/03/2013 - 20:41h

Teixeira,

Obrigado pelo seu comentário.

Celso Faria
Americana/SP

[6] Comentário enviado por mayconbelfort em 26/07/2013 - 10:21h

Caro djcelsodub,

No meu caso, o apache está configurado para a porta 8001, mas ao digitar o nome do site não deu nada!

O que pode ser?

Obrigado.

[7] Comentário enviado por djcelsodub em 26/07/2013 - 13:26h

Olá mayconbelfort,

Por padrão a porta de HTTP é 80 e HTTPS é 443.
No seu caso, você alterou o "Listen 80" para "Listen 8001". Sendo assim, você deve substituir "80" por "8001" em todas as configurações que referenciam a porta default "80". O mesmo vale para a porta HTTPS.
Como a porta default não precisa ser especificada (pois é implícito na requisição) ao servidor, se esta porta é alterada ela precisa ser especificada na URL.

Como exemplo utilizando a sua configuração na porta 8001, os sites que citei no artigo devem ser acessados assim:

www.site1.com:8001
www.site3.com:8001

Espero ter ajudado.

Abs.

Celso Faria
Americana/SP


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts