Jak rozwiązać błąd httpd apache2 „mieszanie * portów * i portów innych niż * z adresem NameVirtualHost nie jest obsługiwane”

24

Oto błąd, który pojawia się podczas uruchamiania 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

Najpierw postąpiłem zgodnie z tym przewodnikiem na temat konfigurowania serwera Apache do obsługi wielu witryn:

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

Następnie znalazłem podobne pytanie na ServerFault i próbowałem zastosować rozwiązanie, ale to nie pomogło.

Oto przykład mojej ostatecznej konfiguracji 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>

z domeną X, aby chronić niewinnych :-)

Mam też plik conf.d / virtual.conf wspomniany w przewodniku, który wygląda następująco:

NameVirtualHost *

Dziwne jest to, że wszystko wydaje się działać dobrze dla dwóch z trzech stron.

rcampbell
źródło
Opublikuj pełną (!) Konfigurację Apache httpd lub przynajmniej każdą linię NameVirtualHost i <VirtualHost ...>.
joschi
Nie można mieszać dwóch typów na tym samym porcie ip: Miałem konfigurację, w której miałem dwa adresy IP, jeden miał zawieszony massvhost, drugi miał wszystkie hosty oparte na nazwach. Co ważniejsze, jaki jest cel? Co próbujesz osiągnąć? Jakie są twoje ograniczenia?
Marcin

Odpowiedzi:

29

Adresy IP o nazwach z NameVirtualHostmuszą być zgodne z adresami IP w każdym VirtualHostelemencie.

Przykład:

NameVirtualHost *:80
NameVirtualHost *:81

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

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

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

Przeczytać Apache dokumentację wirtualnego hosta dla szczegółów.

joschi
źródło
Chciałbym móc głosować więcej niż raz. Naprawdę powinni to wyraźniej wzywać w dokumentacji.
Alex W
13

Zamień to:

NameVirtualHost *

Z tym:

NameVirtualHost *:80
Eric Dennis
źródło
2
Doceniam prostą odpowiedź i chciałbym zaakceptować obie
rcampbell
5

Dodając do odpowiedzi, jedną rzeczą, którą zauważyłem, jest to, że nie możesz uruchomić SSL bez wyraźnego zadeklarowania: 80 w każdej dyrektywie NameVirtualHost i VirtualHost, apache nie będzie obsługiwał:

NameVirtualHost *

i

NameVirtualHost *: 443

Pomieszane w tej samej konfiguracji, będziesz otrzymywać błędy podczas słuchania apache na porcie zero, jeśli to zrobisz.

Dla mnie właśnie dodałem: 80 do każdego hosta, aby protokół SSL mógł działać poprawnie.

Rodrigo
źródło
0

Dawny:

<VirtualHost 85.25.97.252:80>
NazwaSerwera domena.com
ServerAlias ​​* .domain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/domain.com/httpdocs/"
<Directory "/var/www/domain.com/ httpdocs / ">
Opcje Indeksy FollowSymLinks
AllowOverride All
Order allow, odmowa
Allow from all
</Directory>
</VirtualHost>

friv
źródło