Детальний посібник з налаштування redirect і rewrite в .htaccess: приклади 301/302/307/308 редиректів, правила mod_rewrite, оптимізація продуктивності, типові с...
Блог компанії 3v-Hosting
8 хв.
AlmaLinux 9 швидко закріпився у свідомості користувачів як заміна старому доброму CentOS, насамперед там, де потрібен передбачуваний сервер, де важлива саме стабільність і відсутність будь-яких несподіванок після оновлень. Щоб просто встановив систему - і вона працювала стабільно та передбачувано протягом усього періоду експлуатації. Для будь-якого виробничого середовища це значно спрощує життя.
Наступним кроком після встановлення ОС майже завжди є встановлення веб-сервера, адже неважливо, чи буде це сайт, API, звичайний проксі перед контейнерами, чи ви просто хочете роздавати статику під фронтенд. По суті варіантів не так багато, і найчастіше вибирають саме веб-сервер Nginx, що обумовлено незначним споживанням ресурсів і швидкістю його роботи за певними завданнями, що дозволяє справлятися з навантаженням, яке для Apache вже стає проблемою. Особливо це важливо для проектів на невеликих VPS, де така різниця відчувається відразу. Паралельно з цим він виконує безліч допоміжних, неосновних завдань, таких як проксірування, балансування або видача статичних файлів.
Тому в цій короткій статті давайте розберемо процес встановлення Nginx на AlmaLinux 9 - найпопулярнішу збірку, а також базове його налаштування та типові помилки під час конфігурації.
На чистій системі AlmaLinux Nginx за замовчуванням не встановлений, і логічно буде в першу чергу його встановити. В AlmaLinux з цим все просто, адже базові репозиторії вже містять потрібний пакет і нічого додатково підключати не доведеться.
В AlmaLinux використовується стандартний менеджер пакетів DNF, через який встановлюється майже будь-яке додаткове ПЗ.
Встановлення виконується однією командою:
sudo dnf install nginx -y
Потрібний пакет завантажиться разом з усіма залежностями. Зазвичай це відбувається швидко, протягом декількох секунд.
Після встановлення Nginx не запускається сам, і це його нормальна поведінка, адже не варто запускати ще не налаштований веб-сервер. Система просто розміщує бінарні файли та конфігурації на свої місця, а далі вже ви вирішуєте, коли і як його вмикати.
Стандартний репозиторій AlmaLinux містить стабільну версію веб-сервера, адже ми ж пам'ятаємо, що AlmaLinux - це стабільний дистрибутив. Стабільна версія працює нормально, але може трохи відставати від найсвіжіших оновлень. Тому якщо ваш проект потребує доступу до новітніх можливостей, тоді має сенс встановити Nginx з офіційного репозиторію.
Зробити це не складно, просто спочатку ми підключаємо зовнішній репозиторій, а потім встановлюємо потрібний пакет як зазвичай. Тільки в цьому випадку система буде брати оновлення вже не з рідного репозиторію AlmaLinux, а з зовнішнього репозиторію nginx.org.
Спочатку встановлюємо утиліти для роботи з репозиторіями та створюємо файл, у якому вкажемо новий репо:
sudo dnf install dnf-utils -y
sudo nano /etc/yum.repos.d/nginx.repo
Вставляємо в цей файл наступну конфігурацію:
[nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/9/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key
Це mainline-гілка, в якій нові функції з'являються швидше. Іноді туди потрапляють зміни, які ще не випробувані в стабільній гілці. Для більшості завдань це підходить без проблем, але дійте з розумом і не ризикуйте даремно - ви ж не для того вибрали стабільну ОС, щоб захарастити її нестабільним і неперевіреним ПЗ.
Після цього збережіть файл і далі виконуйте звичайну інсталяцію:
sudo dnf install nginx -y
Якщо Nginx вже був інстальований зі стандартного репозиторію, то пакет оновиться до версії з офіційного джерела. Іноді в такому випадку може виникнути конфлікт версій. Вирішується він простим видаленням старого пакета перед інсталяцією нового.
Якщо у виведенні команди є рядок active (running), зазвичай підсвічений зеленим, значить Nginx успішно запущений і працює. Це означає, що все гаразд, сервіс запустився, systemd не бачить помилок і ваш веб-сервер готовий приймати запити.
Якщо замість цього ви бачите напис inactive (dead), то це означає, що Nginx встановлений, але на даний момент не запущений. Таке буває або відразу після встановлення, поки ви його ще не запустили, або після ручного зупинення сервісу. У цьому випадку спробуйте запустити його ще раз командою:
sudo systemctl start nginx
Статус failed, зазвичай підсвічений червоним, свідчить про те, що Nginx намагався запуститися, але отримав помилку.
Іноді можна побачити activating. Це означає, що сервіс ще намагається запуститися. Якщо такий статус триває довше кількох секунд, щось заважає нормальному запуску. Наприклад, завислий процес, проблема з мережею або некоректний конфіг.
Статус deactivating з'являється під час зупинки сервісу. Зазвичай він швидко зникає. Якщо Nginx довго залишається в такому стані, перевірте процеси та логи.
Для детальної діагностики використовуйте наступну команду, яка покаже записи в системному журналі, що стосуються конкретно Nginx:
journalctl -u nginx -xe
Ця команда покаже останні повідомлення systemd щодо Nginx і в більшості випадків там вже видно, що саме зламалося, будь то зайнятий порт, помилка синтаксису, відмова в доступі або проблема з файлом конфігурації.
Отже, ми запустили веб-сервер Nginx на вашому сервері. Але те, що сервіс запущений, ще не означає, що він реально приймає вхідні з'єднання. Таке трапляється частіше, ніж може здатися, тому відразу після запуску варто перевірити, чи слухає Nginx потрібний порт.
Спочатку дивимося, чи прив'язався процес до 80 порту:
ss -tulnp | grep nginx
У виведенні має бути рядок із зазначенням портів :80 або :443 та процесом nginx. Якщо його немає, то це означає, що сервер не слухає порт, а отже, або він не запустився як слід, або порт уже зайнятий іншим сервісом.
Тоді повертаємося до попереднього кроку і перевіряємо системний журнал та статус сервісу.
Якщо ж порт слухається, тоді перевіримо відповідь самого веб-сервера, звернувшись безпосередньо до 80 порту прямо з консолі, за допомогою утиліти curl:
curl -I http://localhost
Якщо все гаразд, то ви отримаєте HTTP-відповідь, або це буде код 200 OK, або код 403 Forbidden. Якщо ви побачили другий варіант, не впадайте у відчай, це теж нормально і означає, що Nginx працює, але не може надати контент (наприклад, немає потрібних прав або необхідного запитуваного файлу).
Якщо відповіді немає взагалі або з'єднання не встановлюється, тоді очевидно, що проблема глибша. Ну а раз, як ми з'ясували, сервіс запущений і порт слухається, то тут вже необхідно переходити до перевірки firewall'а, конфігурації веб-сервера або інтерфейсів, що прослуховуються, оскільки іноді сервер може бути налаштований на прослуховування тільки localhost. Але давайте по порядку.
Отже, Nginx може бути запущений і навіть слухати потрібний порт, але ззовні сервер все одно буде недоступний. Причиною може бути системний firewall. У AlmaLinux за замовчуванням працює firewalld, і він блокує вхідні з'єднання, якщо їх явно не дозволили. А ми ж їх ще не дозволили. Виправимо це упущення.
Потрібно відкрити порти для HTTP і HTTPS, і найпростіше зробити це через вбудовані системні сервіси:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Як ви здогадалися - перша команда дозволяє з'єднання на порт 80, а друга - на порт 443. Прапорець --permanent зберігає правило, щоб воно не зникло після перезавантаження. Перезавантаження firewall, остання команда, застосовує зміни.
Якщо цього не зробити, то ситуація буде виглядати дивно: локально все працює, навіть curl відповідає з нормальним кодом відповіді, але з іншого комп'ютера веб-сервер недоступний. Майже завжди справа саме у firewall.
Після того, як ми додали необхідні правила, відкриваємо IP вашого сервера в браузері або виконуємо на іншому комп'ютері команду:
curl -I http://YOUR_SERVER_IP
Якщо відповідь є, сторінка відкрилася, то все гаразд. Якщо ж ви отримали помилку, тоді варто ще раз пройти попередні кроки.
Тепер давайте коротко ознайомимося з основними конфігураційними файлами та робочими директоріями, з якими вам доведеться працювати спочатку. Тут все досить просто:
| Шлях | Призначення |
|---|---|
| /etc/nginx/nginx.conf | основна конфігурація веб-сервера |
| /etc/nginx/conf.d/ | конфігурації окремих сайтів |
| /var/log/nginx/ | логи веб-сервера |
| /usr/share/nginx/html/ | директорія за замовчуванням для файлів сайтів |
Надалі, коли ви краще ознайомитеся з Nginx, ви дізнаєтеся про інші корисні файли та директорії, необхідні для роботи інших функцій веб-сервера.
Якщо ж ви вже досвідчений користувач Nginx, то можете сказати, що тут чогось не вистачає, наприклад каталогів sites-available та sites-enabled.
Така схема використовується в дистрибутивах Debian та Ubuntu. Там конфіги лежать у sites-available, а в sites-enabled створюються символічні посилання на ці конфіги, лише на активні сайти. Це зручно, коли потрібно швидко вмикати та вимикати проекти.
В AlmaLinux цього немає з коробки. Але за бажанням таку структуру можна створити вручну, якщо ви вже звикли до неї або керуєте десятками сайтів.
До речі, про те, як встановити Nginx на сервері Ubuntu, можна прочитати тут.
Після встановлення та увімкнення Nginx видає свою стандартну сторінку, яка лежить у дефолтній директорії (див. вище), і для реального сайту є абсолютно марною. Щоб сервер почав працювати з вашим доменом, вам потрібен окремий конфіг, який називається virtual host.
У цій конфігурації, в цьому окремому файлі, ви вказуєте Nginx, на який домен він повинен реагувати, звідки брати файли сайту і як обробляти вхідні запити. Один файл - один сайт. На одному сервері у вас може бути кілька сайтів, які всі будуть обслуговуватися одним веб-сервером, при цьому таких конфігів може бути скільки завгодно.
Ось мінімальний приклад конфігураційного файлу сайту, який ви можете назвати як завгодно і присвоїти йому розширення .conf:
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Коротко пробіжимося по тому, що тут відбувається.
listen 80 - ця інструкція вказує, який порт слухати серверу, у нашому випадку сервер слухає порт 80, HTTP; server_name - праворуч від цієї інструкції ми повинні вказати домен, на який веб-сервер повинен відповідати. Якщо домен у заголовку запиту не збігається із зазначеним у цьому блоці, то цей блок не спрацює, а пакет буде оброблено іншим virtual host із потрібним доменом; root - ця інструкція вказує шлях до файлів вашого сайту; index - ця інструкція вказує, який файл необхідно віддавати за замовчуванням.
Блок location / - є базовим правилом обробки запитів. Спочатку Nginx шукає файл за вказаним шляхом, а якщо файлу немає, тоді повертає код помилки 404.
Файли з такими конфігураціями - віртуальними хостами - зазвичай розміщують у директорії /etc/nginx/conf.d/, після чого перевіряють конфігурацію та виконують reload. І якщо DNS вже вказує на ваш сервер, то сайт відкриється одразу.
Ну і наостанок обов'язково варто згадати про те, як перевірити конфігурацію. Це робиться командою:
sudo nginx -t
Ну а застосування конфігурації після будь-яких змін виконується командою:
sudo systemctl reload nginx
Все, на цьому етапі ви встановили веб-сервер Nginx на сервер з ОС AlmaLinux9 і запустили ваш перший сайт. Якщо захочете глибше ознайомитися з усіма можливостями Nginx - обов'язково відвідайте їхній власний сайт.
Перевірте, чи активний firewall (firewalld) і чи відкритий порт 80 для HTTP, а також переконайтеся, що сам сервіс Nginx запущений і не прив'язаний до локальної адреси (127.0.0.1) замість публічного IP.
Відкрийте конфігураційний файл вашого сайту, знайдіть директиву listen 80; і замініть 80 на потрібний порт, після чого не забудьте перезапустити Nginx і дозволити новий порт у брандмауері.
Використовуйте команду sudo nginx -t, вона перевірить синтаксис усіх конфігураційних файлів і покаже точний файл та рядок з помилкою, якщо вона є, що особливо корисно перед перезавантаженням сервера.
Швидше за все, порт 80 вже зайнятий іншою програмою (наприклад, Apache або Varnish), тому необхідно знайти потрібний процес командою sudo ss -tlnp | grep :80 і або зупинити його, або змінити порт для Nginx на інший, як описано вище.
Виконайте команду sudo systemctl enable nginx - це додасть Nginx до автозавантаження, а потім командою sudo systemctl start nginx запустіть його зараз, щоб під час наступного перезавантаження сервера сайт одразу став доступним.
Як ви встигли переконатися, Nginx на AlmaLinux 9 встановлюється досить просто, але для коректної роботи важливо відразу перевірити кілька параметрів, таких як налаштування firewall, синтаксис конфігурації та статус самого сервісу.
У цій статті ми з вами розібрали типові проблеми, коротко торкнулися того, чому сервер може не відкриватися в браузері, як змінити порт у разі конфліктів, а також перевірити конфігурацію перед перезавантаженням системи та налаштувати автозапуск веб-сервера. Дотримуючись цих рекомендацій, ви швидко отримаєте стабільно працюючий веб-сервер без зайвих складнощів.
А якщо ви плануєте розміщувати свій сайт за допомогою CloudFlare, тоді вам буде корисно ознайомитися і з цією статтею.
Як змінилися кібератаки у 2025-2026 роках і чому під удар потрапили VPS, виділені сервери та хостинг загалом. Розбираємо реальні сценарії атак і що це означає д...
Що таке UFW, його особливості та переваги. Розбираємо базові налаштування брандмауера в Linux: логіка правил, відкриття портів, управління доступом та типові по...
Що означає помилка HTTP 500, чому вона виникає і як її швидко діагностувати. Практичні кроки, приклади та поради для серверів, CMS та додатків.