Próbuję dodać drugi wirtualny host do mojej konfiguracji Apache, ale nie mogę uzyskać nowego wirtualnego hosta do użycia.
Mój httpd.conf
zawiera tylko następujący wiersz:
ServerName radiofreebrighton.org.uk
Mam również ports.conf
plik, który zawiera następujące elementy:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Mam dwa pliki sites-available
, które zostały dowiązane do sites-enabled
przez a2ensite
:
- radiofreebrighton.org.uk
- trafalgararches.co.uk
Treść pierwszego to:
<VirtualHost _default_:80>
DocumentRoot /home/tom/www
ServerAdmin [email protected]
ServerName radiofreebrighton.org.uk
ServerAlias www.radiofreebrighton.org.uk
<Directory /home/tom/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel error
CustomLog /var/log/apache2/access.log combined
Alias /wiki /home/tom/www/mediawiki/index.php
</VirtualHost>
Zawartość tego ostatniego to:
<VirtualHost *:80>
DocumentRoot /home/tom/tata-www
ServerAdmin [email protected]
ServerName trafalgararches.co.uk
ServerAlias www.trafalgararches.co.uk
<Directory /home/tom/tata-www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
logLevel error
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Ale za każdym razem, gdy żądam strony z trafalgararches.co.uk, otrzymuję stronę z radiofreebrighton.org.uk. Dlaczego tak się dzieje? Jak mogę to naprawić?
Edytować:
Konfiguracja hosta wirtualnego w rozumieniu apache:
tom@rfb:/usr/local$ apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost trafalgararches.co.uk (/etc/apache2/sites-enabled/trafalgararches.co.uk:1)
Syntax OK
(Gleaned via apache2ctl -S
aka httpd -S
.)
apache-2.2
virtualhost
Tom Wright
źródło
źródło
ServerName
iServerAlias
. Upewnij się również, że ponownie uruchomiłeś apache.NameVirtualHost *:80
gdzieś w swojej konfiguracji?Odpowiedzi:
To pytanie ma ponad rok, ale natknąłem się na podobny „problem”. Może to być oczywiste, ale nie zapomnij zrestartować usługi Apache po włączeniu dodatkowego hosta wirtualnego. Zobacz, po uruchomieniu
a2ensite
dla drugiego wirtualnego hosta, wynikapache2ctl -S
pokaże, że obie strony są dostępne (i jedna z nich jest domyślna), nawet jeśli nie przeładowałeś apache.Załóżmy, że masz dwa wirtualne hosty - site1 i site2. Uruchom,
a2ensite site1
a następnie ponownie załaduj usługę Apache. Teraz możesz uzyskać dostęphttp://site1
i jest to ustawienie domyślne. Teraz biegniesza2ensite site2
, ale zapomnij zrestartować apache. Wyjścieapache2ctl -S
będzie:Ale gdy spróbujesz załadować
http://site2
, faktycznie załaduje domyślną witrynę (site1), ponieważ konfiguracja nie jest ładowana.źródło
Miałem podobny problem, gdy wszystkie moje dodatkowe vhosty na porcie 443 (SSL / HTTPS) były przekierowywane do katalogu pierwszego wymienionego vhosta. Apache zasadniczo ignorował właściwość servername i pasował tylko na ip: port.
Okazuje się, że brakowało mi polecenia „NameVirtualHost *: 443”, aby włączyć Nazwany wirtualny hosting dla portu 443.
„NameVirtualHost *: 443” należy wywołać tylko raz i należy go zdefiniować nad vhostami dla portu 443. Umieściłem swoją definicję w pliku ports.config, aby wyglądał następująco:
Nie zapomnij zrestartować apache po jakichkolwiek zmianach.
źródło
NameVirtualHost
powoduje wyświetlenie tego komunikatu przy uruchomieniu:AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf
Moje 2 centy: ponieważ muszę trzymać się adresu IP (nie chcę, aby witryna była obsługiwana we wszystkich zainstalowanych sieciach), zdarzyło się, że po zmianie lokalnego prywatnego adresu IP serwera zapomniałem go tutaj zmienić:
NameVirtualHost 192.168.100.20:80 <VirtualHost 192.168.100.20:80>
Oczywiście nie jest to problem Apache informujący, że IP nie istnieje lokalnie.
źródło
Tom, spójrz tutaj http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Więc powinno być w porządku, jeśli zmienisz domyślny adres IP twojego serwera.
źródło
Znajduję odpowiedź tutaj: http://alexking.org/blog/2007/11/01/apache-2-only-serves-first-virtual-host
Umieść 2 nazwy serwera w tym samym 1 znaczniku VirtualHost, jak poniżej:
Skończyło się problemy z drugą witryną, ponieważ miałem dwa bloki tagów VirtualHost.
źródło
Miałem ten problem z migracją witryn na nowy serwer Ubuntu 16. Po drobnych zarysowaniach zdałem sobie sprawę, że moduł SSL nie jest domyślnie włączony, więc wszystko w
<IfModule mod_ssl.c>
blokach jest oczywiście dyskretnie ignorowane.Wiele lat temu zawarłem wszystkie moje vhosty SSL w tym stanie warunkowym i tym razem właśnie skopiowałem pliki konfiguracyjne na nowy serwer.
Naprawiłem to, włączając moduł:
źródło
Odkryłem, że źródłem tego problemu jest wpis / etc / hosts na moim serwerze z adresem URL wskazującym na zewnętrzny adres IP serwera.
W pewnym momencie musiałem go skonfigurować, zanim DNS był gotowy, więc wprowadziłem wpis / etc / hosts na moim serwerze wskazujący na jego własny zewnętrzny adres IP:
Następnie skonfigurowałem ServerAlias w istniejącej witrynie dla „vhost.example.com”
Ale nic, co mogłem zrobić, nie powstrzymałoby Apache'a od serwowania strony default-ssl.conf dla żądań SSL do vhost.example.com. Port 80 HTTP działał OK, ale SSL zawsze pokazywał domyślną stronę. W końcu ten wątek SO skłonił mnie do wypróbowania „apachectl -S”, który pokazuje strony i wreszcie udało mi się to rozgryźć.
Więc jeśli otrzymujesz domyślną witrynę SSL zamiast oczekiwanej, upewnij się, że nie dodałeś zewnętrznego adresu IP serwera we wpisie / etc / hosts! Całkiem dziwna rzecz do zrobienia z perspektywy czasu, ale miejmy nadzieję, że to pomaga komuś innemu!
źródło