Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Віртуальні сервери

Налаштування перенаправлень за допомогою Nginx на VPS: Повний посібник конфігурації

Перенаправлення є фундаментальним компонентом будь-якої добре керованої веб-інфраструктури. Незалежно від того, чи ви реструктуризуєте свій веб-сайт, мігруєте на новий домен або тимчасово маршрутизуєте трафік під час обслуговування, правильно налаштовані перенаправлення захищають ваші рейтинги SEO, зберігають цінність посилань і гарантують, що відвідувачі завжди потрапляють на правильну сторінку. Nginx — один з найпотужніших і найширше використовуваних веб-серверів у світі — робить впровадження перенаправлень як гнучким, так і ефективним.

Цей комплексний посібник проведе вас через все, що вам потрібно знати про налаштування HTTP перенаправлень за допомогою Nginx у середовищі VPS Hosting, від розуміння типів перенаправлень до тестування та перевірки вашої конфігурації у виробництві.

1. Розуміння HTTP перенаправлень

Перш ніж торкатися будь-якого файлу конфігурації, важливо розуміти, що насправді роблять перенаправлення та чому вибір правильного типу має значення — особливо для SEO.

HTTP перенаправлення — це відповідь сервера, яка інструює клієнта (зазвичай веб-браузер або краулер) перейти на іншу URL-адресу, ніж та, яка була спочатку запрошена. Сервер передає цю інструкцію за допомогою 3xx HTTP кодів стану, і конкретний код, який ви виберете, має значні наслідки як для досвіду користувача, так і для поведінки пошукових систем.

Найпоширеніші типи перенаправлень

Тип перенаправленняКод стануВипадок використанняПередає Link Equity?
Постійне перенаправлення301Ресурс постійно переміщений✅ Так
Тимчасове перенаправлення302Ресурс тимчасово недоступний❌ Ні
Тимчасове перенаправлення (Method-Safe)307Тимчасовий перехід, зберігає HTTP метод❌ Ні
Постійне перенаправлення (Method-Safe)308Постійний перехід, зберігає HTTP метод✅ Так

301 Постійне перенаправлення

301 перенаправлення — це найбільш критичний для SEO тип перенаправлення. Воно сигналізує пошуковим системам, що ресурс постійно переміщений на нову URL-адресу, передаючи накопичену посилальну цінність оригінальної сторінки (також звану “посилальним соком”) на адресу призначення. Використовуйте це при постійному перейменуванні URL-адрес, консолідації дублікованого вмісту або міграції на новий домен.

302 Тимчасове перенаправлення

302 перенаправлення повідомляє браузерам та краулерам, що перехід тимчасовий і оригінальна URL-адреса буде врешті-решт відновлена. Оскільки пошукові системи інтерпретують це як тимчасове, вони не передають посилальну цінність на адресу призначення. Використовуйте це для A/B тестування, тимчасових сторінок обслуговування або короткострокових перенаправлень акцій.

307 Тимчасове перенаправлення

307 перенаправлення поводиться подібно до 302, але з однією критичною різницею: воно явно зберігає оригінальний HTTP метод запиту. Якщо клієнт надсилає запит POST на URL-адресу, яка повертає 307, клієнт повинен повторити POST на нову URL-адресу замість переходу на GET. Це важливо для API кінцевих точок та надсилання форм.

308 Постійне перенаправлення

308 перенаправлення — це постійний аналог 307 — воно сигналізує про постійний перехід, одночасно зберігаючи HTTP метод запиту. Воно використовується рідше, ніж 301, але цінне в середовищах, багатих на API.

2. Передумови: доступ до вашого VPS через SSH

Для налаштування перенаправлень Nginx вам потрібен доступ до командного рядка вашого сервера. Якщо ви використовуєте середовище Linux-based VPS Hosting, це означає підключення через SSH.

Крок 1: відкрийте свій термінал і підключіться

На Linux або macOS відкрийте ваш термінал. На Windows використовуйте клієнт на кшталт PuTTY або вбудований Windows Terminal з підтримкою OpenSSH.

ssh username@your_server_ip

Замініть username на вашого фактичного системного користувача (наприклад, root або користувача з правами sudo) та your_server_ip на публічну IP-адресу вашого VPS.

Приклад:

ssh admin@203.0.113.45

Після підключення переконайтеся, що Nginx встановлений і працює:

sudo systemctl status nginx

Ви повинні побачити вихідні дані, що вказують на те, що служба активна (запущена). Якщо Nginx ще не встановлений, ви можете встановити його за допомогою:

# On Ubuntu/Debian
sudo apt update && sudo apt install nginx -y

# On CentOS/RHEL/AlmaLinux
sudo dnf install nginx -y

3. Пошук та розуміння файлів конфігурації Nginx

Nginx використовує ієрархічну структуру конфігурації. Розуміння того, де знаходяться файли, є важливим перед внесенням будь-яких змін.

Шляхи конфігурації за замовчуванням

ШляхПризначення
/etc/nginx/nginx.confОсновний файл конфігурації Nginx
/etc/nginx/sites-available/Доступні конфігурації віртуальних хостів
/etc/nginx/sites-enabled/Активні конфігурації з символічними посиланнями
/etc/nginx/conf.d/Додаткові файли конфігурації (стиль CentOS/RHEL)

На системах Ubuntu/Debian рекомендований підхід — створити окремі файли конфігурації в /etc/nginx/sites-available/ і потім увімкнути їх, створивши символічні посилання в /etc/nginx/sites-enabled/.

На системах CentOS/RHEL/AlmaLinux конфігурації зазвичай знаходяться в /etc/nginx/conf.d/.

Відкриття файлу конфігурації

Щоб відредагувати конфігурацію для конкретного домену:

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

Якщо файл ще не існує, ця команда створить його. Ви також можете використовувати vim або будь-який інший текстовий редактор на ваш вибір.

4. Налаштування перенаправлень у Nginx

Nginx обробляє перенаправлення переважно через дві директиви: return та rewrite. Директива return простіша, швидша і рекомендується для більшості сценаріїв перенаправлення. Директива rewrite пропонує більше можливостей для складних перенаправлень на основі шаблонів.

Метод 1: Використання директиви return (рекомендується)

Директива return зупиняє обробку та негайно повертає клієнту вказаний код стану HTTP та URL. Це найефективніший підхід для простих перенаправлень.

Налаштування постійного перенаправлення 301 (один URL)

server {
    listen 80;
    server_name example.com www.example.com;

    location /old-page {
        return 301 https://example.com/new-page;
    }
}

У цій конфігурації будь-який запит до http://example.com/old-page буде постійно перенаправлений на https://example.com/new-page. Пошукові системи оновлять свої індекси, щоб відобразити нову URL, і передадуть авторитет посилання відповідно.

Налаштування тимчасового перенаправлення 302

server {
    listen 80;
    server_name example.com;

    # Temporary redirect during maintenance
    location /promo-page {
        return 302 https://example.com/temporary-landing;
    }
}

Ця конфігурація тимчасово перенаправляє відвідувачів з /promo-page на /temporary-landing без впливу на SEO-сигнали вихідної URL.

Перенаправлення всього домену (без www на www)

Дуже поширений випадок використання — це встановлення канонічного домену — наприклад, перенаправлення всього трафіку http://example.com на https://www.example.com:

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

server {
    listen 443 ssl;
    server_name www.example.com;

    # SSL configuration here
    # ...
}

Змінна $request_uri зберігає вихідний шлях та рядок запиту, тому http://example.com/blog/post-1?ref=newsletter правильно перенаправляється на https://www.example.com/blog/post-1?ref=newsletter.

Перенаправлення HTTP на HTTPS (примусове використання SSL)

Примусове використання HTTPS — це найкраща практика безпеки та підтверджений сигнал рейтингу Google. Після встановлення SSL-сертифіката на вашому сервері налаштуйте перенаправлення таким чином:

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

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # Your site configuration continues here
    root /var/www/example.com/html;
    index index.html index.php;
}

Ця конфігурація перехоплює весь HTTP-трафік на порту 80 і видає перенаправлення 301 на HTTPS-еквівалент, забезпечуючи, що всі відвідувачі та краулери використовують безпечну версію вашого сайту.

Перенаправлення всього старого домену на новий домен

При міграції вашого веб-сайту на абсолютно новий домен використовуйте такий шаблон:

server {
    listen 80;
    listen 443 ssl;
    server_name old-domain.com www.old-domain.com;

    ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;

    return 301 https://new-domain.com$request_uri;
}

Це зберігає повний шлях URL під час міграції домену, що критично важливо для збереження ваших SEO-рейтингів. Якщо вам потрібно зареєструвати новий домен для вашого проекту, AlexHost пропонує доступні послуги реєстрації доменів.

Метод 2: Використання директиви rewrite (перенаправлення на основі шаблонів)

Директива rewrite використовує регулярні вирази для відповідності та трансформації URL. Вона більш потужна, але також більш ресурсомістка, ніж return. Використовуйте її, коли вам потрібно перенаправити кілька шаблонів URL за допомогою одного правила.

Базовий синтаксис rewrite

rewrite regex replacement [flag];

Прапори:

    last — Зупиняє обробку поточних директив rewrite та починає новий пошук місцезнаходження
    break — Зупиняє обробку директив перезапису в поточному блоці
    redirect — Повертає тимчасове перенаправлення 302
    permanent — Повертає постійне перенаправлення 301
    
    Перенаправлення URL за шаблоном
    Припустимо, ви реструктуризуєте свій блог і вам потрібно перенаправити всі URL з /blog/YYYY/MM/post-slug на /articles/post-slug:
    server {
        listen 80;
        server_name example.com;
    
        rewrite ^/blog/[0-9]{4}/[0-9]{2}/(.*)$ /articles/$1 permanent;
    }
    Це одне правило обробляє всю реструктуризацію URL блогу, захоплюючи слаг посту та вставляючи його в новий шаблон URL.
    Перенаправлення кількох конкретних URL
    Для невеликої кількості конкретних змін URL використання кількох директив return у окремих блоках location є чистішим і більш продуктивним:
    server {
        listen 80;
        server_name example.com;
    
        location = /about-us {
            return 301 /about;
        }
    
        location = /services/web-design {
            return 301 /services/web-development;
        }
    
        location = /contact-form {
            return 301 /contact;
        }
    }
    Модифікатор = у location виконує точне відповідання, що є найшвидшим типом відповідання у Nginx.
    Метод 3: Перенаправлення на основі рядків запиту
    Nginx не підтримує нативно відповідність рядків запиту в блоках location, але ви можете використовувати змінну $arg_ або директиви if для перенаправлень на основі рядків запиту:
    server {
        listen 80;
        server_name example.com;
    
        location /page {
            if ($arg_id = "123") {
                return 301 /new-page-123;
            }
            if ($arg_id = "456") {
                return 301 /new-page-456;
            }
        }
    }
    > Примітка: Хоча директиви if працюють для простих випадків, вони можуть спричинити несподівану поведінку в складних конфігураціях. Спільнота Nginx часто називає це проблемою «if is evil». Використовуйте з обережністю та ретельно тестуйте.
    5. Розширені сценарії перенаправлення
    Перенаправлення піддиректорії на іншу доменну область
    server {
        listen 80;
        server_name example.com;
    
        location /shop/ {
            return 301 https://shop.example.com$request_uri;
        }
    }
    Видалення кінцевих скісок
    Непослідовні кінцеві скіски можуть створювати проблеми з дублюванням вмісту. Щоб канонікалізувати URL-адреси, видаливши кінцеві скіски:
    server {
        listen 80;
        server_name example.com;
    
        rewrite ^/(.*)/$ /$1 permanent;
    }
    Додавання кінцевих скісок до URL-адрес директорій
    І навпаки, якщо ваша CMS або додаток вимагає кінцевих скісок:
    server {
        listen 80;
        server_name example.com;
    
        location ~ ^(/[^.]*[^/])$ {
            return 301 $1/;
        }
    }
    Геолокаційні перенаправлення за допомогою GeoIP
    Для веб-сайтів, які обслуговують кілька регіонів, ви можете перенаправляти користувачів на основі їхнього географічного розташування за допомогою ngx_http_geoip_module:
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    
    server {
        listen 80;
        server_name example.com;
    
        if ($geoip_country_code = "DE") {
            return 302 https://de.example.com$request_uri;
        }
    
        if ($geoip_country_code = "FR") {
            return 302 https://fr.example.com$request_uri;
        }
    }
    6. Тестування конфігурації Nginx
    Ніколи не застосовуйте зміни на production-сервері без попереднього тестування. Синтаксична помилка у конфігурації Nginx може взяти весь ваш веб-сайт в офлайн.
    Крок 1: Перевірте синтаксис конфігурації
    sudo nginx -t
    Очікуваний результат для дійсної конфігурації:
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    Якщо ви бачите помилки, Nginx повідомить про конкретний файл та номер рядка, де була виявлена проблема, що полегшує налагодження.
    Крок 2: Перезавантажте Nginx для застосування змін
    Після того як тест конфігурації пройде успішно, перезавантажте Nginx без втрати активних з’єднань:
    sudo systemctl reload nginx
    Крім того, для повного перезапуску (що коротко перериває активні з’єднання):
    sudo systemctl restart nginx
    Для більшості змін перенаправлення, reload достатньо та є переважним.
    7. Перевірка того, що ваші перенаправлення працюють правильно
    Після застосування конфігурації перевірте, що перенаправлення працюють точно так, як передбачено, перш ніж вважати завдання завершеним.
    Метод 1: Тестування в браузері
    Відкрийте браузер і перейдіть на стару URL. Спостерігайте, чи ви правильно перенаправлені на нове місце призначення. Для отримання більш детальної інформації відкрийте Інструменти розробника (F12), перейдіть на вкладку Мережа і перезавантажте сторінку. Ви побачите повний ланцюг перенаправлень, включаючи коди стану, повернені на кожному кроці.
    Метод 2: Використання curl з командного рядка
    Команда curl — це найнадійніший спосіб тестування перенаправлень без втручання кешування браузера:
    curl -I http://example.com/old-page
    Прапор -I отримує лише заголовки HTTP-відповіді. Шукайте заголовок Location та код стану у відповіді:
    HTTP/1.1 301 Moved Permanently
    Server: nginx/1.24.0
    Date: Mon, 01 Jan 2024 12:00:00 GMT
    Content-Type: text/html
    Location: https://example.com/new-page
    Connection: keep-alive
    Щоб автоматично слідувати всьому ланцюгу перенаправлень:
    curl -IL http://example.com/old-page
    Прапор -L наказує curl слідувати перенаправленням, а в поєднанні з -I він показує заголовки на кожному кроці ланцюга.
    Метод 3: Онлайн-інструменти перевірки перенаправлень
    Кілька безплатних онлайн-інструментів можуть візуалізувати ваші ланцюги перенаправлень і виявити проблеми, такі як цикли перенаправлень або надмірна кількість переходів:
    
    Redirect Checker (redirect-checker.org)
    httpstatus.io
    Screaming Frog SEO Spider (настільна програма, безплатна до 500 URL)
    
    Перевірка циклів перенаправлень
    Цикл перенаправлення виникає, коли URL A перенаправляється на URL B, який перенаправляється назад на URL A (або через довший ланцюг, який врешті циклюється). Це призводить до того, що браузери відображають помилку, як-от *"ERR_TOO_MANY_REDIRECTS"*.
    Щоб виявити цикли за допомогою curl:
    curl -IL --max-redirs 10 http://example.com/old-page
    Якщо curl досягне максимального ліміту перенаправлень, у вас є цикл. Уважно перегляньте вашу конфігурацію, щоб переконатися, що не існує циклічних шляхів перенаправлення.
    8. Поширені помилки перенаправлення та як їх уникнути
    Помилка 1: Використання 302 замість 301
    Це найпоширеніша помилка SEO з перенаправленнями. Якщо зміна URL-адреси постійна, завжди використовуйте 301. Випадкове використання 302 означає, що пошукові системи не передадуть equity посилання та продовжуватимуть індексувати стару URL-адресу.
    Помилка 2: Ланцюги перенаправлень
    Уникайте непотрібного ланцюгування перенаправлень (наприклад, A → B → C → D). Кожен додатковий перехід додає затримку та зменшує SEO-значення, передане через ланцюг. Регулярно перевіряйте ваші перенаправлення та оновлюйте їх, щоб вони вказували безпосередньо на кінцеву адресу.
    Помилка 3: Незбереження рядків запиту
    При перенаправленні цілих доменів або каталогів завжди включайте $request_uri або $query_string у ціль перенаправлення, щоб уникнути видалення важливих параметрів URL-адреси.
    Неправильно:
    return 301 https://new-domain.com;
    Правильно:
    return 301 https://new-domain.com$request_uri;
    Помилка 4: Забування обробки як HTTP, так і HTTPS
    Якщо ваш сайт обслуговує як HTTP, так і HTTPS, переконайтеся, що ваші правила перенаправлення враховують обидва протоколи, інакше ви можете отримати непослідовну поведінку.
    Помилка 5: Відсутність тестування після змін
    Завжди запустіть sudo nginx -t перед перезавантаженням, і завжди перевіряйте перенаправлення за допомогою curl після застосування змін. Кілька секунд тестування можуть запобігти годинам усунення неполадок.
    9. Nginx Redirects vs. .htaccess Redirects
    Якщо ви переходите з хостингу на базі Apache на Nginx на VPS, ви можете бути звичні керувати перенаправленнями через .htaccess файли. Важливо розуміти, що Nginx не підтримує .htaccess файли. Вся логіка перенаправлення повинна бути розміщена безпосередньо в конфігураційних файлах блоку сервера Nginx.
    Це насправді є перевагою: Nginx не потребує читання .htaccess файлів при кожному запиті, що сприяє його вищій продуктивності порівняно з Apache в багатьох сценаріях.
    Якщо ви віддаєте перевагу керованому досвіду панелі керування для вашого VPS, AlexHost пропонує VPS з cPanel та набір VPS панелей керування, які надають графічні інтерфейси для керування перенаправленнями та іншими конфігураціями сервера без прямого редагування файлів конфігурації.
    10. SEO Best Practices for Nginx Redirects
    Правильно налаштовані перенаправлення є критичним компонентом технічного SEO. Ось ключові принципи, яких слід дотримуватися:
    Використовуйте 301 перенаправлення для постійних змін
    Кожного разу, коли ви постійно змінюєте URL — чи то перейменування сторінки, реструктуризація архітектури сайту або міграція доменів — використовуйте 301 перенаправлення. Це забезпечує оновлення індексів Google та інших пошукових систем і передачу рейтингової потужності старого URL новому.
    Мінімізуйте кількість переходів перенаправлення
    Краулери Google слідують за ланцюгами перенаправлень, але кожен перехід споживає бюджет краулінгу та дещо розбавляє PageRank. Тримайте ланцюги перенаправлень якомога коротшими — в ідеалі один перехід від старого URL до кінцевого призначення.
    Оновіть внутрішні посилання
    Перенаправлення — це подушка безпеки, а не заміна чистого внутрішнього посилання. Після впровадження перенаправлень оновіть свої внутрішні посилання, щоб вони вказували безпосередньо на нові URL. Це зменшує навантаження на сервер і забезпечує, щоб краулери витрачали свій бюджет на контент, а не на слідування перенаправленням.
    Надішліть оновлену карту сайту
    Після значних змін URL оновіть свою XML карту сайту, щоб відобразити нові URL, і надішліть її повторно через Google Search Console. Це прискорює процес переіндексації.
    Моніторинг за допомогою Google Search Console
    Після впровадження перенаправлень моніторьте Google Search Console на предмет помилок краулінгу, проблем з охопленням та будь-яких несподіваних падінь у показах або кліках. Проблеми з перенаправленням часто виявляються протягом днів після впровадження.
    Висновок
    Оволодіння конфігурацією перенаправлення Nginx є важливою навичкою для будь-якого системного адміністратора або власника веб-сайту, який запускає VPS. Незалежно від того, чи ви примушуєте HTTPS, консолідуєте дублікати URL-адрес, мігруєте на новий домен або переструктуруєте архітектуру свого сайту, Nginx надає інструменти для ефективної та надійної обробки кожного сценарію.
    Ключові висновки з цього посібника:
    
    Виберіть правильний тип перенаправлення: 301 для постійних переміщень (критично для SEO), 302/307 для тимчасових переміщень
    Використовуйте директиву return для простих перенаправлень — це швидше та чистіше, ніж rewrite
  • Використовуйте директиву rewrite для складних, заснованих на шаблонах трансформацій URL-адрес
  • Завжди тестуйте за допомогою sudo nginx -t перед перезавантаженням та перевіряйте за допомогою curl -IL після
  • Збережіть рядки запиту за допомогою $request_uri при перенаправленні цілих доменів або каталогів
  • Уникайте ланцюгів перенаправлень, спрямовуючи перенаправлення безпосередньо до кінцевих пунктів призначення
  • Якщо ви шукаєте надійне, високопродуктивне середовище для запуску вашого сервера Nginx, ознайомтеся з планами VPS Hosting AlexHost — розроблені для швидкості, безпеки та повного доступу root, щоб ви мали повний контроль над конфігурацією вашого сервера.