Como o Apache sabe qual site carregar ao ter vários sites na mesma porta?

1

Eu configurei 2 sites no meu host local. Um no localhost: 8197 e um no fc.localhost: 8197 Claro, para fazer isso funcionar, eu editei meu arquivo / etc / hosts para incluir

fc.localhost    127.0.0.1

Então, estas são minhas configurações para cada site, respectivamente:

000-default.conf (site localizado no localhost):

<VirtualHost *:8197>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/html/>
        Options +Indexes +FollowSymLinks +ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

fc.conf (site localizado em fc.localhost):

<VirtualHost *:8197>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/alex/Documents/fc/Website/fc/html
    ServerName fc.localhost
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /home/alex/Documents/fc/Website/fc/html>
        Options +Indexes +FollowSymLinks +ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

Suponha que meu endereço IP local seja 10.8.210.51 e algum pc em minha rede local coloque 10.8.210.51:8197 em a barra de endereços do seu navegador, então o apache do meu lado vai servir o primeiro site (localhost) e não o segundo (fc.localhost). O mesmo acontece se eu colocar 127.0.0.1:8197 na minha barra de endereços (lado do servidor).

Então, minha pergunta é, fora de claro interesse, como o Apache decide qual site deve ser veiculado e como posso mudar esse comportamento?

    
por hytromo 21.01.2015 / 16:10

2 respostas

2

A resposta curta para o seu caso específico: o apache servirá o primeiro host virtual sobreposto. Como 000-default é antes de fc.localhost no alfabeto, o primeiro virtualhost é carregado e servido.

Para responder o que eu suponho é a seguinte pergunta: Você pode hospedar muitos sites no mesmo IP: PORT usando namedVirtualHosts

Esta tecnologia baseia-se no Cabeçalho do host na especificação HTTP

E por causa de complicações com SSL https virtualhosts são possíveis via Indicação do nome do servidor

    
por 21.01.2015 / 16:18
1

Isso se chama "hospedagem virtual baseada em nome", descrita aqui :

    
por 21.01.2015 / 16:17