Назад | Перейти на главную страницу

Закройте HTTP-подключения к HTTPS-порту apache

Когда клиент отправляет 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.