Como posso resolver o erro httpd do apache2 "não há suporte para misturar * portas e não * portas com um endereço NameVirtualHost"

24

Aqui está o erro que recebo ao inicializar o Apache2:

 * Starting web server apache2
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [warn] NameVirtualHost *:80 has no VirtualHosts

Segui pela primeira vez este guia sobre como configurar o Apache para hospedar vários sites:

http://www.debian-administration.org/articles/412

Encontrei uma pergunta semelhante no ServerFault e tentei aplicar a solução, mas não ajudou.

Aqui está um exemplo da minha configuração final do VirtualHost:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName  www.xxx.com
    ServerAlias xxx.com

    # Indexes + Directory Root.
    DirectoryIndex index.html
    DocumentRoot /var/www/www.xxx.com

    # Logfiles
    ErrorLog  /var/www/www.xxx.com/logs/error.log
    CustomLog /var/www/www.xxx.com/logs/access.log combined
</VirtualHost>

com o domínio X'd para proteger os inocentes :-)

Além disso, tenho o arquivo conf.d / virtual.conf mencionado no guia da seguinte maneira:

NameVirtualHost *

O estranho é que tudo parece funcionar bem em dois dos três sites.

rcampbell
fonte
Poste sua configuração httpd completa do Apache (!) Ou pelo menos todas as linhas NameVirtualHost e <VirtualHost ...>.
Joschi
Você não pode misturar os dois tipos no mesmo ip: port. Eu tive uma configuração onde eu tinha dois ip's, um tinha massvhost pendurado, o outro tinha todos os hosts regulares baseados em nomes. Mais importante, qual é o objetivo? O que você está tentando alcançar? Quais são as suas restrições?
Marcin

Respostas:

29

Os endereços IP nomeados com NameVirtualHostdevem corresponder ao endereço IP em cada VirtualHostelemento.

Exemplo:

NameVirtualHost *:80
NameVirtualHost *:81

<VirtualHost *:80>
# ...
</VirtualHost>

<VirtualHost *:81>
# ...
</VirtualHost>

# This will not work!
<VirtualHost *>
# ...
</VirtualHost>

Leia a documentação do Apache Virtual Host para obter detalhes.

joschi
fonte
Gostaria de poder votar mais de uma vez. Eles realmente deveriam chamar isso mais claramente na documentação.
Alex W
13

Substitua isto:

NameVirtualHost *

Com isso:

NameVirtualHost *:80
Eric Dennis
fonte
2
Agradeço a resposta simples e gostaria de poder aceitar tanto
rcampbell
5

Adicionando às respostas, uma coisa que notei é que você não pode executar SSL sem ter declarado explicitamente: 80 em todas as diretivas NameVirtualHost e VirtualHost, o apache não suporta:

NameVirtualHost *

e

NameVirtualHost *: 443

Misturados na mesma configuração, você obterá erros no apache ouvindo na porta zero se fizer isso.

Para mim, acabei de adicionar: 80 a todos os hosts para que o SSL pudesse funcionar de maneira proprietária.

Rodrigo
fonte
0

Ex:

<VirtualHost 85.25.97.252:80>
ServerName domain.com
ServerAlias ​​* .domain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/domain.com/httpdocs/"
<Directory "/var/www/domain.com/ httpdocs / ">
Índices de opções FollowSymLinks
AllowOverride All
Order allow, negue
Allow from all
</Directory>
</VirtualHost>

friv
fonte