HSTS (HTTP Strict Transport Security) — это HTTP-заголовок, который говорит браузеру: «Общайся с этим сайтом только по HTTPS, даже если пользователь ввёл http://».
Это защищает от атак типа SSL-stripping, когда злоумышленник перехватывает соединение и подменяет HTTPS на HTTP, перехватывая пароли и данные.
Когда браузер получает заголовок:
Strict-Transport-Security: max-age=31536000; includeSubDomains
Он запоминает это правило на указанное время (в секундах). Всё это время браузер автоматически будет использовать HTTPS для этого домена — без запроса по HTTP.
secure не уйдут по HTTP.В блоке server для HTTPS добавьте:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Затем:
nginx -t
systemctl reload nginx
Начните с небольшого значения — например, max-age=300 (5 минут). Проверьте, что всё работает. Потом увеличьте до года (31536000 секунд).
Почему: если вы включите HSTS на год, а потом сломаете HTTPS — пользователи не смогут зайти на сайт, пока не истечёт срок или не сбросят кэш браузера.
Этот параметр распространяет HSTS на все поддомены. Если у вас есть поддомен без HTTPS — он перестанет открываться. Включайте, только если все поддомены работают по HTTPS.
Можно добавить preload и отправить сайт в список HSTS Preload. Тогда даже первый заход будет по HTTPS. Но: попасть в список легко, а выйти — сложно (месяцы).
Откройте DevTools (F12) → Network → обновите страницу → выберите главный запрос → Headers. Ищите строку Strict-Transport-Security.
Или через терминал:
curl -s -D - https://ваш-сайт.ru -o /dev/null | grep -i strict
Бесплатный экспресс-аудит за 2 минуты
Проверить сайт →HSTS — простая настройка, которая защищает пользователей и повышает доверие поисковиков. Включить её — одна строка в nginx. Если ещё не включили — сделайте это сегодня.