У меня есть частный сервер HTTPS, использующий nginx. Поэтому меня не волнует ни совместимость браузера, ни перенаправление HTTP на HTTPS; Я просто хочу, чтобы он работал в моем окружении и больше нигде. Я уже настроил его с помощью "слушайте 17648 ssl;". Всякий раз, когда я пытаюсь подключиться к нему с помощью обычного HTTP, я получаю печально известный ответ «Обычный HTTP-запрос был отправлен на порт HTTPS».
Есть ли способ запретить nginx вообще отправлять какой-либо ответ, когда HTTP-запрос отправляется на порт HTTPS? Я бы хотел, чтобы nginx просто закрыл соединение, если запрос не является SSL, или, возможно, вернул некоторую ошибку уровня SSL, но вообще не ответил HTTP, даже не ответ с ошибкой.
Из документации Nginx о возвращение пункт:
Нестандартный код 444 закрывает соединение без отправки заголовка ответа.
Итак, я попытался отловить ошибку 497 «HTTP to HTTPS» и попытался вернуть 444 следующим образом:
error_page 497 =444 @close;
location @close {
return 444;
}
К сожалению, это приводит к состоянию "ожидания" из-за этого ошибка
Используя обходной путь, предложенный разработчиком, кажется, что он работает:
error_page 497 =444 @close;
location @close {
return 0;
}
Попробуйте, если это соответствует вашим потребностям!