Я пытаюсь заставить apache перенаправить с http на https, однако я хочу, чтобы они оба были на одном порте (20100, но я сомневаюсь, что это будет иметь значение). В основном что происходит Вот за исключением того, что я не делаю этого для webmin. В настоящее время он настроен для обслуживания HTTPS, и когда я получаю доступ по HTTP, я получаю:
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Кажется, есть много похожих вопросов, однако я не могу найти тот, который действительно отвечает на мой вопрос.
Это невозможно с Apache. С Apache у вас не может быть HTTPS и HTTP, работающих на одном порту.
Я знаю несколько мультиплексоров портов, предназначенных для HTTPS/ OpenVPN и SSH работают на том же порту, но для этого требуется дополнительное программное обеспечение.
Это можно заархивировать, перенаправив на пользовательскую страницу «400 - неверный запрос» и изменив перенаправление с помощью правила перезаписи. В следующем примере я запрашиваю
http: //test.mydomain.com:27000
и вас перенаправят на
https: //test.mydomain.com:27000
с одним виртуальным хостом.
Код:
ErrorDocument 400 /
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}:27000/$1 [R,L]
Или вы просто перенаправляете напрямую на HTTPS-версию страницы.
Код:
ErrorDocument 400 https://test.mydomain.com:27000
Но вы потеряете возможность перенаправления на настоящую страницу с ошибочным запросом.