Portál AbcLinuxu, 27. dubna 2024 01:18
S laskavým přispěním zde zúčastněných a průzkumem internetu bylo nalezeno řešení, které uvádím s výpisem nastavení virtuálních hostů z konfiguračního souboru Apache pro případ, že kdyby někdo podobný problém někdy řešil, aby měl snažší práci.
Princip je jednoduše v tom, že oba hosty napíšeme dvakrát. Jednou oba pro port 80 a podruhé oba pro port 443 s tím, že ssl.neco.xx:80
provede jen přesměrování stejně jako www.neco.xx:443
. Naproti tomu www.neco.xx:80
a ssl.neco.xx:443
jsou vlastní virtuální hosté, kteří se budou používat. Tím se zajistí, že zadáme-li v prohlížeči https://www.neco.xx
, změní se to samo na http://www.neco.xx
a podobně http://ssl.neco.xx
se samo změní na https://ssl.neco.xx
. Www běží tedy jen přes http
a ssl jen přes https
. Protokol použitý se mění s ohledem na název domény a bez ohledu na protokol zadaný v prohlížeči.
Výpis konfigurace
#Konfigurace virtuálních hostů na jedné #IP-adrese tak, že s www se komunikuje jen #pomocí protokolu HTTP a se ssl jen pomocí #protokolu HTTPS. O změnu použitého protokolu #se stará modul mod_rewrite, který přesměruje #požadavky s nechtěným protokolem na kýžený #protokol. #Vyhodnocení požadavků na portu 80 NameVirtualHost 192.168.1.4:80 <VirtualHost 192.168.1.4:80> ServerName www.neco.xx DocumentRoot /www/http #ostatní nastavení </VirtualHost> #Virtuální host, který se stará jen o přesměrování #z HTTP na HTTPS pro ssl.neco.xx <VirtualHost 192.168.1.4:80> ServerName ssl.neco.xx DocumentRoot /www/https #Přepsání lokátoru URL tak, aby místo HTTP začínal HTTPS RewriteEngine On RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R] </VirtualHost> #Vyhodnocení požadavků na portu 443 NameVirtualHost 192.168.1.4:443 <IfDefine SSL> #je-li zaveden modul mod_ssl... <VirtualHost 192.168.1.4:443> ServerName ssl.neco.xx DocumentRoot /www/https SSLEngine On SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eN:ULL SSLCertificateFile ssl/server.crt SSLCertificateKeyFile ssl/server.key </VirtualHost> </IfDefine> #Virtuální host, který se stará o případné přesměrování #z HTTPS na HTTP pro www.neco.xx <VirtualHost 192.168.1.4:443> ServerName www.neco.xx DocumentRoot /www/http #Přepsání lokátoru URL tak, aby místo HTTPS začínal HTTP RewriteEngine On RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [L,R] </VirtualHost>IP-adresa je tu 192.168.1.4, ale může být (samozřejmě) jakákoliv jiná
RedirectMatch ^/$ https://ssl.example.org/
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.