O que há de errado com o meu VirtualHost?

4

Eu tenho o seguinte VirtualHost

// filename: /etc/apache2/sites-available/ccbbbcc

<VirtualHost 1.1.1.1:80>
     ServerAdmin [email protected]
     ServerName ccbbbcc.com
     ServerAlias www.ccbbbcc.com
     DocumentRoot /srv/www/ccbbbcc/production/public_html/
     ErrorLog /srv/www/ccbbbcc/production/logs/error.log
     CustomLog /srv/www/ccbbbcc/production/logs/access.log combined
</VirtualHost>

E então eu também tenho

//filename: /etc/apache2/sites-available/default

<VirtualHost 1.1.1.1:80>
ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
blah blah blah

Por que quando eu digito no meu link , ele me leva a link ? Mesmo quando aponto novos URLs para o IP 1.1.1.1, as páginas da Web são disponibilizadas pelo link . Por que não consigo atender páginas do diretório / var / www?

Sintomas adicionais - o vhost ccbbbcc substitui ALGUNS dos meus outros vhosts. Nem todos.

Notas adicionais

Eu me certifiquei de usar o a2ensite e reiniciar o apache.

Isto é o que meu /etc/apache2/ports.conf se parece com

NameVirtualHost 1.1.1.1:80
Listen 80
Listen 443

Eu criei um arquivo chamado /srv/www/ccbbbcc/production/public_html/test.html com o texto "Hello World". Quando eu digito link , a página é carregada corretamente. Quando eu digito link , recebo uma página 404 não encontrada. Quando eu digito o link , o navegador atualiza e exibe o link da URL a>. Em seguida, adiciono test.html ao final do URL e o Hello World aparece novamente.

Então, isso significa que há um redirecionamento http acontecendo em algum lugar? Se assim for, não consigo determinar o que está causando isso.

Além disso, percebo que o ccbbbcc substitui ALGUMAS dos meus virtualhosts, não todos. Não parece haver um padrão para o qual o vhost seja discriminado / substituído.

Eu também notei que se eu fizer o seguinte

1. a2dissite ccbbbcc
2. /etc/init.d/apache2 reload
3. a2ensite ccbbbcc
4. /etc/init.d/apache2 reload

Então, de repente, o link exibe páginas de / var / www / e link também serve páginas de / var / www. Como é que o a2ensite / a2dissite afeta onde as páginas são carregadas? A única maneira de fazer ccbbbcc servir páginas de / srv / www / cbs / production novamente é reiniciar meu servidor linux inteiro! O que está acontecendo?

    
por John 15.04.2010 / 18:14

3 respostas

8

Como você pode ler em Uma discussão aprofundada sobre a correspondência de host virtual :

The first vhost on this list (the first vhost in the config file with the specified IP address) has the highest priority and catches any request to an unknown server name or a request without a Host: header field.

Seu httpd Apache carrega e avalia o arquivo /etc/apache2/sites-available/ccbbbcc antes de /etc/apache2/sites-available/default .

Renomeie /etc/apache2/sites-available/default por exemplo para /etc/apache2/sites-available/00_default e /etc/apache2/sites-available/ccbbbcc para /etc/apache2/sites-available/01_ccbbbcc , para que o arquivo padrão seja carregado primeiro.

    
por 20.04.2010 / 10:11
1

Você tem uma diretiva NameVirtualHost?

Veja aqui: link

Basicamente, se você não tiver uma diretiva NameVirtualHost * ou específica NameVirtualHost 1.1.1.1:80, o host virtual não é baseado em nome, é endereço: baseado em porta.

    
por 15.04.2010 / 18:18
1

Sem um bloco ServerName / ServerAlias nos seus hosts virtuais, o apache servirá o domínio primeiro instanciado durante a leitura da configuração. Neste caso, alfabeticamente, o arquivo de configuração do ccbbbccc.com deve vir antes do padrão.

Adicione as diretivas ServerName e / ou ServerAlias em / etc / apache2 / sites-enabled / default e você deve estar definido.

    
por 15.04.2010 / 19:31