Nginx - это веб-сервер на базе Linux и прокси-приложение. Nginx - это мощный инструмент для перенаправления и управления веб-трафиком. Его можно легко настроить для перенаправления незашифрованного веб-трафика HTTP на зашифрованный HTTPS-сервер.
Это руководство покажет вам, как перенаправить HTTP на HTTPS с помощью Nginx.
Что нам потребуется
- Сервер Linux под управлением Nginx
- Учетная запись пользователя с привилегиями sudo
- Удаленный вход на веб-сервер (необязательно, требуется только в том случае, если вы не работаете непосредственно с веб-сервером)
- Доступ к терминалу/командной строке (Ctrl-Alt-T или Ctrl-Alt-F2)
Редирект с HTTP на HTTPS
Для принудительного перенаправления HTTP на HTTPS вам необходимо отредактировать файл конфигурации Nginx.
В большинстве случаев вы можете найти этот файл в каталоге /etc/nginx/sites-available. Если не найдено, найдите его здесь: /etc/nginx/nginx.conf, /usr/local/nginx/conf или /usr/local/etc/nginx.
Найдя файл конфигурации Nginx, откройте его в текстовом редакторе с помощью команды:
sudo nano /etc/nginx/sites-available/server.conf
Замените местоположение фактическим местоположением и именем вашего файла конфигурации.
Когда файл конфигурации будет открыт для редактирования, вставьте один из блоков кода ниже. Как только вы закончите редактирование, сохраните файл и выйдите. Затем перезапустите службу Nginx с помощью следующей команды:
sudo service nginx restart
Перенаправить весь HTTP-трафик на HTTPS
Откройте файл конфигурации Nginx для редактирования, затем вставьте следующий код:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
Вот разбивка команд:
- Listen 80: Это дает команду системе перехватывать весь HTTP-трафик через порт 80
- Server_name _ ;: Это будет соответствовать любому имени хоста
- Return 301: Это говорит браузеру и поисковым системам, что это постоянное перенаправление
- https://$host$request_uri: Это короткий код для указания версии HTTPS того, что набрал пользователь
После редактирования весь трафик сервера HTTP по умолчанию перенаправляется на HTTPS.
Примечание: Это должен быть единственный блок сервера, прослушивающий порт 80. Блок сервера - это единица кода конфигурации в Nginx. Он помечен именем и фигурными скобками.
Перенаправить определенный сайт
У вас может быть несколько серверов, но только некоторые из них могут требовать HTTPS. Укажите имя сервера в блоке сервера для перенаправления выбранного трафика:
server {
listen 80 default_server;
server_name my_app.com;
return 301 https://my_app.com$request_uri;
}
Замените имя my_app.com на имя сервера, который вы собираетесь перенаправить. Вы также можете добавить дополнительные сайты, добавив еще один блок сервера. Просто скопируйте код и измените имя сервера.
Принимать только SSL-соединения
Добавьте этот код, чтобы убедиться, что сервер будет принимать только SSL-соединения через порт 443:
server {
listen 443 ssl default_server;
server_name my_app.com;
}
server {
listen 443 ssl;
server_name my_website.com;
}
Этот блок кода настроит два веб-сайта, my_app.com и my_website.com, на прием только SSL-соединений. Вы можете добавить дополнительные сайты, используя дополнительные блоки серверов.
Редирект страниц
Вы можете использовать rewrite для быстрого управления 301 (постоянным) или 302 (временным) перенаправлением:
Location /index.html {
rewrite ^/oldURL$ https://www.your_domain.com/newURL redirect;
}
В большинстве случаев это будет index.html, но вы можете указать любой путь или шаблон.
Обратите внимание, что команда rewrite должна использоваться только с перенаправлениями 301 или 302.
Как перенаправить домен с помощью Nginx
Это полезно, если вы сменили домен (например с .org на .com). Nginx также можно использовать для перенаправления со старого доменного имени на новое доменное имя.
server {
listen 80;
listen 443 ssl;
server_name www.old_company.com;
return 301 $scheme://www.new_company.com$request_uri;
}
В большинстве случаев команда return предпочтительнее команды rewrite.
Редирект с сайта www на сайт без www
Этот процесс аналогичен стандартному перенаправлению страницы:
server {
server_name www.new_company.com;
return 301 $scheme://new_company.com$request_uri;
}
Причины для перенаправления трафика
Есть несколько причин для перенаправления HTTP-трафика на HTTPS:
- Принудительное установление более безопасного зашифрованного соединения.
- Сохранение страницы с хорошим SEO-рейтингом, но перенаправление своего трафика на новую страницу.
- Уведомлять и временно отправлять трафик на страницу «на обслуживании».
- Постоянно отправлять трафик с одного сайта на другой, например после корпоративного слияния.
Заключение
Теперь вы знаете, как перенаправить HTTP на HTTPS в Nginx. Редактируя файл конфигурации, вы можете отправлять трафик из определенного места назначения на другой сайт и принудительно использовать сертификаты SSL. Это поможет вам безопасно управлять изменениями на вашем сайте, не нарушая пользовательский опыт.