Как настроить редирект в Nginx на другой URL? (Nginx URL Redirect)

HTTP-перенаправление, или редиректы Nginx, - это техника, позволяющая перенаправлять пользователей и браузеры с одного веб-адреса на другой. Её часто применяют, когда на сайте меняется структура или домен. Существует несколько типов редиректов, и каждый из них сообщает браузеру что-то своё об изменении.

Два наиболее распространённых типа: временные редиректы (HTTP-код состояния 302): они идеально подходят для ситуаций, когда контент временно перемещён. Например, во время технического обслуживания вы можете перенаправлять пользователей на временную страницу с объяснением простоя.
Постоянные редиректы (HTTP-код состояния 301): 

Они сообщают браузерам и поисковым системам, что страница перемещена навсегда. Обычно их используют при переходе на новый домен или окончательном изменении структуры сайта. В этом гайде разберём, как настроить оба типа редиректов в NGINX, и приведём практические примеры для типичных сценариев перенаправления.

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  • Сервер с установленным и правильно настроенным NGINX для хостинга вашего сайта (сайтов).
  • Если вам нужна помощь с настройкой, воспользуйтесь гайдами для операционных систем, таких как Ubuntu 22.04, Debian или CentOS.

Что такое редирект в Nginx?

В NGINX редирект - это серверная функция, которая перенаправляет входящие запросы с одного URL на другой. Редиректы играют важную роль при обновлении структуры сайта, смене домена или внедрении единого формата URL. NGINX поддерживает разные типы редиректов, чаще всего используются постоянный (301) и временный (302).

Редиректы можно настроить в блоке server NGINX (его также называют виртуальным хостом или файлом vhost). Типичные сценарии использования:

  • Перенаправление HTTP-трафика на HTTPS для защищённых соединений
  • Принудительное использование версии URL с www или без www
  • Настройка правил временного или постоянного перенаправления на основе шаблонов URL

Это позволяет управлять потоком трафика на ваш сайт и помогает улучшить безопасность, SEO и пользовательский опыт.

Как Nginx перенаправляет на другой URL?

NGINX позволяет легко создавать редиректы с помощью встроенной директивы rewrite, которая доступна по умолчанию. С её помощью можно задавать как временные, так и постоянные редиректы, указав шаблон для сопоставления и новый URL назначения.

Пример 1: временный редирект определённой страницы

Приведённый ниже блок server перенаправляет запросы к /old-page на example-site.com на /maintenance.html на том же домене:

server {
listen 80;
server_name example-site.com;
location /old-page {
rewrite ^/old-page$ /maintenance.html redirect;
}
}

Так настраивается временный (302) редирект, полезный, когда страница недоступна в течение короткого времени, например во время технического обслуживания.

Пример 2: временный редирект всего трафика на другой домен

Чтобы перенаправить весь трафик с blog.example.com на archive.example.net с сохранением пути запроса:

server {
listen 80;
server_name blog.example.com;
rewrite ^/(.*)$ https://archive.example.net/$1 redirect;
}

Так каждый запрос будет отправлен на новый домен с тем же путём, но как временный редирект.

Пример 3: постоянный редирект с HTTP на HTTPS

Принудительно перенаправьте весь HTTP-трафик на HTTPS с помощью редиректа 301:

server {
listen 80;
server_name mysite.org;
return 301 https://$host$request_uri;
}

Это рекомендуемая практика для улучшения безопасности и SEO.

Пример 4: постоянный редирект с версии без www на www

Если вы хотите навсегда перенаправить весь трафик с example.org на www.example.org:

server {
listen 80;
server_name example.org;
return 301 http://www.example.org$request_uri;
}

Так пользователи и поисковые системы всегда будут попадать на предпочтительный домен.

Перенаправление на новый домен

При переводе сайта на новый домен важно не оставлять старый без дела. Без перенаправления любые закладки, внешние ссылки или проиндексированные страницы будут вести на нерабочие URL, что может стоить вам трафика и навредить SEO.

В этом разделе разберём, как с помощью NGINX навсегда перенаправить трафик со старого домена (например, domain1.com) на новый (domain2.com). Поскольку переезд постоянный, мы используем редирект 301, чтобы поисковые системы и браузеры в дальнейшем считали новый домен официальным адресом.

Предположим, что в NGINX у вас уже настроены два блока server:

Старый домен: /etc/nginx/sites-available/domain1.com

server {
listen 80;
server_name domain1.com;
# Existing configuration
}

Новый домен: /etc/nginx/sites-available/domain2.com

server {
listen 80;
server_name domain2.com;
# New site setup
}

Применение редиректа

Теперь нужно изменить конфигурацию старого домена, чтобы весь трафик перенаправлялся на новый домен с помощью постоянного редиректа:

server {
listen 80;
server_name domain1.com;
rewrite ^/(.*)$ https://domain2.com/$1 permanent;
}

В этой конфигурации:

  • Регулярное выражение ^/(.*)$ захватывает всё, что идёт после корня (/) во входящем URL.
  • $1 в URL назначения подставляет захваченный путь в редирект.
  • Слово permanent в конце директивы rewrite указывает NGINX отправить HTTP-код состояния 301, который браузеры и поисковые системы воспринимают как постоянное перемещение.

Например, запрос к http://domain1.com/contact.html будет автоматически перенаправлен на https://domain2.com/contact.html.

Перезагрузка конфигурации Nginx

После внесения изменений не забудьте проверить и перезагрузить конфигурацию NGINX:

$ sudo nginx -t
$ sudo systemctl reload nginx

Так новое правило перенаправления станет активным, а все посетители и поисковые системы будут корректно попадать на новый домен.

Заключение

Теперь вы знаете, как настроить редиректы в NGINX. Важно выбрать правильный тип, постоянный или временный, так как неправильный может повлиять на SEO.

Редиректы Nginx также полезны для принудительного использования HTTPS и стандартизации URL (например, добавления www.). При правильном использовании они помогают сохранить трафик сайта и в то же время дают гибкость в изменении его структуры.

Чтобы узнать больше, обратитесь к официальной документации NGINX, особенно к разделам о модуле rewrite и руководствам по редиректам.

BlueVPS предлагает мощные VPS-серверы с полным root-доступом через RDP, что даёт вам полный административный контроль, если вы выбираете сервер на Windows. Наши VPS-решения оснащены высокопроизводительными корпоративными SSD, что обеспечивает быстрое и надёжное хранение данных. 

С BlueVPS масштабирование простое: вы можете быстро увеличить ресурсы сервера, как только ваши потребности вырастут, с минимальным простоем. Попробуйте гибкий и надёжный VPS-хостинг, адаптированный под ваши требования.

Откройте для себя надёжный и масштабируемый VPS-хостинг с полным root-доступом на BlueVPS.

Blog