Когда клиент отправляет http-запрос к apache https VirtualHost
, apache отвечает:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
</p>
<hr>
<address>Apache/2.4.7 (Ubuntu) Server at 127.0.0.1 Port 443</address>
</body></html>
Как я могу заставить apache закрыть соединение или ответить подходящим ssl Ошибка рукопожатия / tls?
У меня есть балансировщик нагрузки, который узнает, является ли порт члена внутреннего пула http или https, пытаясь соединиться с http, а затем повторяя попытку с https. Ошибка 400 неверного запроса от участника проходит через балансировщик нагрузки и возвращается клиенту вместо того, чтобы заставить балансировщик повторять попытку с помощью https.
Я думаю, что mod_write может помочь: https://www.sslshopper.com/apache-redirect-http-to-https.html .
Это будет автоматически перенаправлять HTTP-запросы на HTTPS.
Однако это может не сработать, если вы используете общий хостинг или не имеете доступа к файлам .htaccess.