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.com
. Note 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>