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

nginx: полностью отключить HTTP-ответы для SSL-порта

У меня есть частный сервер 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;
}

Попробуйте, если это соответствует вашим потребностям!