Переадресация HTTP to HTTPS in Nginx
Переадресация HTTP to HTTPS in Nginx
В этом руководстве мы объясним, как перенаправить HTTP-трафик на HTTPS в Nginx.

В этом руководстве мы объясним, как перенаправить HTTP-трафик на HTTPS в Nginx.
Nginx произносится как «engine x» - это бесплатный высокопроизводительный HTTP и обратный прокси-сервер с открытым исходным кодом, отвечающий за загрузку некоторых из крупнейших сайтов в Интернете.
Если вы разработчик или системный администратор, скорее всего, вы имеете дело с Nginx на регулярной основе. Одна из наиболее распространенных задач, которые вы, вероятно, будете выполнять, - это перенаправление трафика HTTP на защищенную (HTTPS) версию вашего сайта.
В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде открытого текста, HTTPS использует TLS / SSL для шифрования связи между клиентом и сервером.
Есть много преимуществ использования HTTPS по HTTP, таких как:
- Все данные зашифрованы в обоих направлениях. В результате конфиденциальная информация не может быть прочитана, если перехвачена.
- Google Chrome и все другие популярные браузеры будут помечать ваш сайт как безопасный.
- HTTPS позволяет использовать протокол HTTP / 2, что значительно повышает производительность сайта.
- Google поддерживает сайты HTTPS. Ваш сайт будет иметь более высокий рейтинг, если будет обслуживаться по HTTPS.
Предпочтительным способом перенаправления HTTP на HTTPS в Nginx является настройка отдельного блока сервера для каждой версии сайта. Следует избегать перенаправления трафика с использованием директивы if , так как это может привести к непредсказуемому поведению сервера.
Перенаправить HTTP на HTTPS для каждого сайта
Чтобы перенаправить один сайт на HTTPS, откройте файл конфигурации домена и внесите следующие изменения:
server {
listen 80;
listen [::]:80;
server_name linuxize.com www.linuxize.com;
return 301 https://linuxize.com$request_uri;
}
Давайте разберем код построчно:
listen 80
- Блок сервера будет прослушивать входящие соединения через порт 80 для указанного домена.server_name linuxize.com www.linuxize.com
- Определяет доменные имена блока сервера. Убедитесь, что вы заменили его своим доменным именем.return 301 https://linuxize.com$request_uri
- Перенаправить трафик на HTTPS-версию сайта.$request_uri
Переменный является полным исходным запросом URI , включая аргументы.
Как правило, вы также захотите перенаправить HTTPS-версию сайта www на сайт без www или наоборот. Рекомендуемый способ сделать перенаправление - создать отдельный блок сервера для версий www и non-www.
Например, чтобы перенаправить запросы HTTPS www не на www, вы должны использовать следующую конфигурацию:
server {
listen 80;
listen [::]:80;
server_name linuxize.com www.linuxize.com;
return 301 https://linuxize.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.linuxize.com;
# . . . other code
return 301 https://linuxize.com$request_uri;
}
server {
listen 443 ssl http2;
server_name linuxize.com;
# . . . other code
}
Перенаправить все сайты на HTTPS
Если все веб-сайты, размещенные на сервере, настроены на использование HTTPS, и вы не хотите создавать отдельный блок HTTP-сервера для каждого сайта, вы можете создать один универсальный блок HTTP-сервера. Этот блок перенаправит все HTTP-запросы в соответствующие блоки HTTPS.
Чтобы создать один универсальный HTTP-блок, который будет перенаправлять посетителей на HTTPS-версию сайта, откройте файл конфигурации Nginx и внесите следующие изменения:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
Давайте проанализируем код построчно:
listen 80 default_server
- Устанавливает этот блок сервера как блок по умолчанию (перехватывать все) для всех несопоставленных доменов.server_name _
-_
недопустимое доменное имя, которое никогда не совпадает с реальным доменным именем.return 301 https://$host$request_uri
- Перенаправить трафик на соответствующий блок HTTPS-сервера с кодом состояния 301 (постоянно перемещено).$host
Переменная содержит имя домена запроса.
Например, если посетитель открывается http://example.com/page2
в браузере, Nginx перенаправит запрос на https://example.com/page2
.
Если возможно, предпочтите создание перенаправления для каждого домена вместо глобального перенаправления HTTP на HTTPS.
Вывод
После того, как на вашем сайте установлен SSL-сертификат, вы должны перенаправить HTTP-трафик на HTTPS.