Como ter vários sites em um único endereço IP com Apache

Como ter vário sites em um único endereço IP através de um servidor Apache

Seu servidor tem um único endereço de IP, mas pode ser diversos CNAMES relacionados ao DNS. É possível, por exemplo, rodar um servidor para os sites www.example.com e www.example.org na mesma máquina. 

Criar configurações do seu host virtual no servidor Apache, não significa que as entradas de DNS tenham nomes. É preciso nomeá-las para ter reconhecimento de IP, caso contrário, ninguem verá seu site. Você pode inserir as entradas para seus hosts em um arquivo local, mas isso só irá funcionar em máquinas com essas estradas específicas. 

# Assegure-se que o Apache esteja na porta 80Listen80<VirtualHost*:80>DocumentRoot/www/example1
    
    # Outras diretivas 
</VirtualHost><VirtualHost*:80>DocumentRoot/www/example2 ServerName www.example.org </VirtualHost>

Os asteriscos correspondem a todos os endereços IP, portanto, o servidor principal não irá atender suas solicitações. Como o ServerName www.example.com é o no arquivo de configuração, ele tem uma prioridade mais alta e pode ser visto como o servidor padrão ou primário. Isso significa que, se uma solicitação for recebida e não corresponder a nenhuma das diretivas ServerName específicas, ela será exibida primeiro como VirtualHost.

Nota

Você pode, se quiser, substituir o * pelo endereço IP atual do sistema, isso no caso de você não se importar, é claro. No entanto, é mais útil usar * em sistemas onde os endereços IP não são previsíveis, por exemplo, se você tiver um endereço IP dinâmico com seu ISP e estiver usando uma variedade de soluções de DNS dinâmico. Como * combina com qualquer IP, essa configuração funcionaria sem alterações sempre que seu endereço IP fosse alterado.

A configuração acima é o que você desejará usar em quase todas as situações de hospedagem virtual. A única coisa nessa configuração que não funcionará, na verdade, é quando você for veicular conteúdo diferente com base em diferentes endereços IP ou portas.

 

Name-based hospedados em mais de um endereço IP

Nota

Nas técnicas discutidas aqui, pode ser entendido que qualquer número está como IP. No exemplo, o servidor tem dois endereços IP. Um deles ( 172.20.30.40), será o servidor principal vinculado ao server.example.com e, o outro IP ( 172.20.30.50), servirá como host virtual.

Listen80# This is the "main" server running on 172.20.30.40ServerName server.example.com
DocumentRoot/www/mainserver

<VirtualHost172.20.30.50>DocumentRoot/www/example1
    ServerName www.example.com
    
    # Other directives here ...</VirtualHost><VirtualHost172.20.30.50>DocumentRoot/www/example2
    ServerName www.example.org
    
    # Other directives here ...</VirtualHost>

Com isso, qualquer endereço que não seja 172.20.30.50 conseguira acesse o servidor principal.

O mesmo conteúdo em endereços IP diferentes

O servidor possui dois endereços IP (192.168.1.1 e 172.20.30.40). A máquina estará conectada a uma rede interna e externa. Fora da rede,server.example.com é tido como endereço externo ( 172.20.30.40), mas dentro da rede, o mesmo é tido como endereço interno ( 192.168.1.1).

O servidor pode responder tanto solicitações internas e externas com o mesmo conteúdo, apenas informando a área VirtualHost.

< VirtualHost 192.168 . 1,1 172,20 . 30.40 > DocumentRoot / www / server1
     ServerName servidor . exemplo . com
     servidor
 ServerAlias </ VirtualHost >

 

<VirtualHost192.168.1.1172.20.30.40>DocumentRoot/www/server1
    ServerName server.example.com
    ServerAlias server
</VirtualHost>

Agora, solicitações nas duas redes podem servir no mesmo VirtualHost.

Nota

Na rede interna, pode-se usar apenas o nome server em vez do nome completo do host  server.example.comNote também que, no exemplo acima, você pode substituir a lista de endereços IP por  *, o que fará com que o servidor responda o mesmo em todos os endereços.

 

Executando sites diferentes em portas diferentes.

Você tem vários domínios indo para o mesmo IP e também deseja servir várias portas. O exemplo abaixo mostra que correspondência de nomes ocorre após a determinação da melhor combinação de endereço IP e porta.

Listen80Listen8080<VirtualHost172.20.30.40:80>ServerName www.example.com
    DocumentRoot/www/domain-80
</VirtualHost><VirtualHost172.20.30.40:8080>ServerName www.example.com
    DocumentRoot/www/domain-8080
</VirtualHost><VirtualHost172.20.30.40:80>ServerName www.example.org
    DocumentRoot/www/otherdomain-80
</VirtualHost><VirtualHost172.20.30.40:8080>ServerName www.example.org
    DocumentRoot/www/otherdomain-8080
</VirtualHost>

Hospedagem virtual baseada em IP

O servidor tem dois endereços IP ( 172.20.30.40 e  172.20.30.50) que são www.example.com e  www.example.org respectivamente.

Listen80<VirtualHost172.20.30.40>DocumentRoot/www/example1
    ServerName www.example.com
</VirtualHost><VirtualHost172.20.30.50>DocumentRoot/www/example2
    ServerName www.example.org
</VirtualHost>

Pedidos para qualquer endereço não especificado em qualquer <VirtualHost> (como  localhost, por exemplo) irão para o servidor principal, se houver um.

Hosts Virtuais Baseados em Porta e Baseados em IP

A máquina do servidor tem dois endereços IP ( 172.20.30.40 e  172.20.30.50) que são www.example.com e  www.example.org respectivamente. Em cada caso, queremos executar os hosts nas portas 80 e 8080.

Listen172.20.30.40:80Listen172.20.30.40:8080Listen172.20.30.50:80Listen172.20.30.50:8080<VirtualHost172.20.30.40:80>DocumentRoot/www/example1-80
    ServerName www.example.com
</VirtualHost><VirtualHost172.20.30.40:8080>DocumentRoot/www/example1-8080
    ServerName www.example.com
</VirtualHost><VirtualHost172.20.30.50:80>DocumentRoot/www/example2-80
    ServerName www.example.org
</VirtualHost><VirtualHost172.20.30.50:8080>DocumentRoot/www/example2-8080
    ServerName www.example.org
</VirtualHost>

Mistos Vhosts e IPs

Qualquer endereço mencionado em um virtualhost, que nunca aparece em outro, é o host virtual baseado somente no IP.

Listen80<VirtualHost172.20.30.40>DocumentRoot/www/example1
    ServerName www.example.com
</VirtualHost><VirtualHost172.20.30.40>DocumentRoot/www/example2
    ServerName www.example.org
</VirtualHost><VirtualHost172.20.30.40>DocumentRoot/www/example3
    ServerName www.example.net
</VirtualHost># IP-based<VirtualHost172.20.30.50>DocumentRoot/www/example4
    ServerName www.example.edu
</VirtualHost><VirtualHost172.20.30.60>DocumentRoot/www/example5
    ServerName www.example.gov
</VirtualHost>
  • IP, Apache
  • 6 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

Como reiniciar a rede Ubuntu?

O reiniciamento da interface de rede Ubuntu só pode ser realizado depois que a interface de rede...

Como saber a última vez que um usuário esteve logado no sistema Linux?

  Neste tutorial, você irá conseguir saber como verificar quem usou recentemente o servidor...

Como saber o quanto de RAM ainda há no sistema?

  Alguns usuários pensam que o Linux "rouba" espaço de memória RAM não utilizada para o seu...

Como otimizar seu MySQL

Para realizar otimização do MySQL é recomendado utilizar o mysqlmymonlite.sh...

Como se conectar remotamente com um servidor MySQL

Esse é um tutorial que irá lhe ensinar a como se configurar e se conectar a um servidor MySQL...

SiteLock