Настройка перенаправления с помощью Nginx на VPS

При управлении веб-сайтом или приложением на вашем VPS перенаправления необходимы для управления потоками трафика между URL-адресами. Независимо от того, переходите ли вы на HTTPS, перенаправляете старый домен или убираете неработающие ссылки, Nginx позволяет легко и эффективно управлять перенаправлениями на уровне веб-сервера.

В этом руководстве мы рассмотрим, как настроить различные типы перенаправлений в Nginx, включая:

  • Постоянные перенаправления (301)

  • Временные перенаправления (302)

  • HTTP на HTTPS

  • Не-www на www (и наоборот)

  • Переписывание конкретных путей

Необходимые условия

  • VPS с установленным Nginx

  • Root или sudo доступ

  • Файл конфигурации вашего сайта (обычно в /etc/nginx/sites-available/ или /etc/nginx/conf.d/)

1. Постоянный редирект (301)

Используется, когда URL или домен изменился навсегда.

✅ Пример: Перенаправление со старого домена на новый

server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}

🔐 Совет: Всегда перенаправляйте на HTTPS, когда это возможно.

2. Временное перенаправление (302)

Используйте этот вариант для временного перенаправления (например, во время технического обслуживания).

server {
listen 80;
server_name olddomain.com www.olddomain.com;
return 301 https://newdomain.com$request_uri;
}

3. Перенаправление HTTP на HTTPS

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

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

Затем настройте блок HTTPS-сервера отдельно:

server {
listen 443 ssl;
server_name example.com;
# SSL config here
}

4. Перенаправление www на не-www (или обратное)

Выберите одну предпочтительную версию для согласованности и SEO.

От www к не www:

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

Или с не-www на www:

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

5. Перенаправление по определенному пути

Пример: Перенаправьте /blog на /articles:

location = /blog {
return 301 /articles;
}

Или с полным URL:

location = /blog {
return 301 https://example.com/articles;
}

Где разместить эти директивы

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

/etc/nginx/sites-available/example.com

Затем, при необходимости, сделайте симлинк на sites-enabled:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

После обновления конфигурации

Всегда проверяйте конфигурацию Nginx перед перезагрузкой:

sudo nginx -t

Если ошибок нет:

sudo systemctl reload nginx

Бонус: перенаправление всех 404 ошибок на главную страницу

error_page 404 =301 /;

Поместите это в блок вашего сервера, чтобы изящно обрабатывать битые ссылки.

Nginx – это не только высокопроизводительный веб-сервер, но и мощный инструмент для управления трафиком и пользовательским опытом с помощью интеллектуальных перенаправлений. Всего несколько строк конфигурации позволят вам внедрить HTTPS, направлять пользователей к нужным URL-адресам и оптимизировать ваш сайт с точки зрения SEO и безопасности.