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-трафик через порт 80Server_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. Это поможет вам безопасно управлять изменениями на вашем сайте, не нарушая пользовательский опыт.