Переход сайта на HTTPS — не просто вопрос доверия пользователей и соответствия требованиям браузеров. Это основа безопасности: шифрование трафика защищает данные пользователей от перехвата. Особенно важно правильно настроить редирект с HTTP на HTTPS на VPS, где вы управляете конфигурацией вручную. Разбираем, как это сделать в Nginx — без циклических перенаправлений, конфликта конфигураций и других типичных ошибок.
Введение

Переход сайта на HTTPS давно стал стандартом: современные браузеры помечают HTTP-сайты как небезопасные, поисковые системы понижают их в выдаче, а пользователи всё чаще обращают внимание на значок замка в адресной строке. Но мало просто установить SSL-сертификат — важно убедиться, что весь трафик автоматически перенаправляется на защищённый протокол.
Особенно это актуально для владельцев VPS, где администрирование сайта происходит вручную. Даже после настройки HTTPS часть посетителей может продолжать заходить по старым HTTP-ссылкам: из закладок, с других сайтов или просто набрав адрес без указания протокола. В таких случаях сайт должен автоматически и корректно направлять их на HTTPS, чтобы ни один запрос не оставался незащищённым.
Неправильная настройка редиректа может привести к проблемам: бесконечным циклам перенаправления, ошибкам 400/500, двойной обработке запросов, загрузке смешанного контента. Часто владельцы сайтов сталкиваются с конфликтами между Nginx и CMS, дублированием логики редиректа в разных частях конфигурации или попытками настроить HTTPS прямо в HTTP-блоке, что приводит к сбоям.
В этой статье мы подробно разберём, как настроить редирект с HTTP на HTTPS в Nginx на VPS: безопасно, правильно и без ловушек. Покажем, как разделить конфигурацию по портам, что можно и нельзя писать в разных блоках, как избежать дублирования и сделать всё по уму. Этот материал будет полезен как новичкам, которые впервые настраивают сервер, так и опытным администраторам, которым важно избежать типичных ошибок и добиться стабильной работы сайта.
Зачем нужен редирект с HTTP на HTTPS
Даже после установки SSL-сертификата часть пользователей может продолжать заходить на сайт по незащищённому протоколу — по старым закладкам, с кэша, с внешних ссылок. Без редиректа такие пользователи останутся на HTTP, что опасно. Правильная настройка перенаправления автоматически переведёт их на защищённую версию сайта и улучшит позиции в поиске.
Шаг 1. Убедитесь, что HTTPS уже работает
Прежде чем настраивать редирект, проверьте, что конфигурация HTTPS уже работает. В Nginx должен быть блок server, в котором указаны:
- порт 443,
- путь к SSL-сертификату,
- настройки шифрования.
Пример:
**
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/example.com/fullchain.pem;
ssl_certificate_key /etc/ssl/example.com/privkey.pem;
другие настройки SSL
}
**
Если такой блок есть, HTTPS уже активен.
Шаг 2. Добавьте отдельный HTTP-блок с редиректом
Для перенаправления всего HTTP-трафика на HTTPS создаётся отдельный server-блок, который слушает порт 80. В нём не должно быть ничего, кроме команды редиректа.
Пример:
**
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
**
Такой редирект работает быстро, не создаёт нагрузки и не вызывает циклов.
Шаг 3. Не добавляйте SSL-настройки в HTTP-блок
Одна из частых ошибок — попытка вписать SSL-директивы в блок, где указан порт 80. Это вызовет ошибку перезапуска Nginx. Блок с listen 80 должен быть минимальным: без сертификатов, без ssl, без rewrite, без proxy_pass.
Шаг 4. Избегайте вложенных или дублирующихся редиректов
Если вы используете CMS (например, WordPress, MODX, Bitrix), она может сама перенаправлять трафик. Чтобы не получить бесконечный цикл, убедитесь, что редирект делается только один раз — на уровне Nginx, или только внутри CMS. Лучше выбрать Nginx — он отрабатывает быстрее и не загружает PHP.
Шаг 5. Убедитесь, что серверный блок HTTPS обслуживает и поддомен www, и основной домен
Если вы перенаправляете www.example.com на https://example.com, настройте это явно. Например:
**
server_name www.example.com;
return 301 https://example.com$request_uri;
**
В противном случае Nginx может не распознать поддомен и отдавать ошибку 404 или SSL mismatch.
Шаг 6. Проверка после настройки
После перезапуска Nginx проверьте, что:
- HTTP-запросы (например, http://example.com) перенаправляются на HTTPS;
- не возникает циклических редиректов (например, http → https → http → https…);
- все ресурсы (CSS, JS, картинки) грузятся по HTTPS;
- сертификат действителен, а браузер не ругается на «небезопасное подключение».
Шаг 7. Перезапуск сервера Nginx
После внесения изменений выполните следующее.
Проверку на ошибки в конфигурации:
sudo nginx -t
Перезагрузку без простоя:
sudo systemctl reload nginx
Заключение
Настроить редирект с HTTP на HTTPS в Nginx — задача несложная, если строго разделять блоки для порта 80 и 443. Правильный редирект должен быть лаконичным, не содержать лишней логики и работать только в одном месте. Такая настройка не только защитит трафик, но и улучшит доверие к сайту и его позиции в поисковиках. На VPS с Nginx всё делается вручную — и именно поэтому важно сделать это один раз, но правильно.
Читайте в блоге:
- Где хранятся логи Nginx
- Исправление ошибки «Too many open files» при работе с Nginx в Linux
- Виды нагрузочного тестирования: как выбрать подходящий для вашего сайта