Mam na swoim serwerze wiele wirtualnych hostów, powiedzmy, że obsługuję
www.example.com
sub.example.com
www.example.nl
W mojej konfiguracji DNS wszystkie wskazują na ten sam serwer.
W konfiguracji apache2 znajduje się domyślny plik konfiguracyjny dla http i jeden dla https oraz dodatkowe vhosty dla dodatkowych stron. Chcę przekierować wszystkie bliskie mecze www.example.com
. Wszystkie określone witryny mają certyfikat.
Moje pliki wyglądają tak
000-default.conf (redirects to https://www.example.com)
default-ssl.conf (serves https://www.example.com)
sub.example.com.conf (redirects to https://sub.example.com)
sub.example.com-ssl.conf (serves https://sub.example.com)
www.example.nl.conf (redirects to https://www.example.nl)
www.example.nl-ssl.conf (serves https://www.example.nl)
Problem polega na tym, że każde inne żądanie (powiedzmy „for” be-creative.example.nl
) domyślnie przyjmuje pierwszą załadowaną konfigurację. Działa to dla http ( 000-default
będzie pasować i przekierowywać), ale nie działa dla https, ponieważ nie załadowałem żadnego ważnego certyfikatu be-creative.example.nl
. Dlatego nie mogę przekierowywać ani wyświetlać prawidłowej strony.
Jeśli wyłączę default-ssl.conf
, żądanie zostanie dopasowane, sub.example.com-ssl.conf
a niewłaściwy certyfikat będzie nadal obsługiwany.
Pytanie : Jak elegancko obsłużyć te żądania, dla których nie mam certyfikatu? Jak mogę przekierować na http bez uprzedniego posiadania ważnego pasującego certyfikatu?
źródło