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 admin@xxx.com
    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.


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.


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


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.


0

Dawny:

<VirtualHost 85.25.97.252:80>
NazwaSerwera domena.com
ServerAlias ​​* .domain.com
ServerAdmin webmaster@domain.com
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>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.