Встановлення та налаштування Nginx на CentOS 7: Повний покроковий посібник
Nginx — один з найпотужніших і найширше використовуваних веб-серверів з відкритим вихідним кодом у світі. Відомий своєю виключною продуктивністю, низьким споживанням пам’яті та здатністю обробляти тисячі одночасних з’єднань, Nginx є найкращим рішенням для подачі статичного контенту, виконання функцій зворотного проксі та балансування навантаження в розподілених системах.
Незалежно від того, чи ви запускаєте особистий блог, високонавантажену платформу електронної комерції чи складну архітектуру мікросервісів, Nginx забезпечує швидкість та надійність, яких вимагають ваші користувачі. Цей комплексний посібник проведе вас через кожен крок встановлення, налаштування, захисту та оптимізації Nginx на сервері CentOS 7 — від підготовки системи до включення HTTPS з безплатним SSL-сертифікатом Let’s Encrypt.
> Передумови: Сервер CentOS 7 з доступом root або sudo. Якщо вам потрібне надійне, високопродуктивне середовище для виконання цих кроків, розгляньте можливість використання VPS Hosting від AlexHost — спеціально розроблено для вимогливих робочих навантажень з повним доступом root і сховищем SSD.
Крок 1: Оновіть вашу систему
Перед встановленням будь-якого нового програмного забезпечення критично важливо переконатися, що ваша система CentOS 7 повністю оновлена. Застарілі пакети можуть привести до вразливостей безпеки та конфліктів залежностей, які ускладнюють процес встановлення.
Відкрийте ваш термінал і виконайте наступну команду:
sudo yum update -yЦя команда оновлює всі встановлені пакети до їхніх найновіших доступних версій. Прапор -y автоматично підтверджує всі запити, роблячи процес неінтерактивним. Дозвольте оновленню повністю завершитися перед тим, як продовжити.
Крок 2: Встановлення Nginx через YUM
Nginx недоступний у стандартних репозиторіях CentOS 7. Спочатку необхідно встановити репозиторій EPEL (Extra Packages for Enterprise Linux), який надає широкий спектр додаткових пакетів програмного забезпечення для дистрибутивів на основі RHEL.
Встановіть репозиторій EPEL:
sudo yum install epel-release -yВстановіть Nginx:
sudo yum install nginx -yЦя команда завантажує та встановлює Nginx разом з усіма необхідними залежностями. Після завершення встановлення ви можете перевірити встановлену версію за допомогою:
nginx -vВи повинні побачити вихід, подібний до:
nginx version: nginx/1.20.xКрок 3: Запуск і включення служби Nginx
З встановленим Nginx вам потрібно запустити службу та налаштувати її для автоматичного запуску кожного разу, коли сервер перезавантажується.
Запустіть службу Nginx:
sudo systemctl start nginxВключіть Nginx для запуску під час завантаження:
sudo systemctl enable nginxПеревірте статус служби, щоб підтвердити, що вона працює:
sudo systemctl status nginxВи повинні побачити вихідні дані, що вказують на те, що служба активна (запущена):
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...Якщо служба не запускається, перегляньте журнали помилок на /var/log/nginx/error.log для діагностичної інформації.
Крок 4: Налаштування брандмауера
CentOS 7 використовує firewalld як інструмент управління брандмауером за замовчуванням. За замовчуванням трафік HTTP (порт 80) та HTTPS (порт 443) блокується. Ви повинні явно відкрити ці порти, щоб дозволити веб-трафіку досягти вашого сервера Nginx.
Дозволити трафік HTTP:
sudo firewall-cmd --permanent --add-service=httpДозволити трафік HTTPS:
sudo firewall-cmd --permanent --add-service=httpsПерезавантажити брандмауер для застосування змін:
sudo firewall-cmd --reloadПеревірити активні правила:
sudo firewall-cmd --list-allВи повинні побачити обидва http та https у розділі services виведення. Якщо ваш сервер розміщений за зовнішнім брандмауером або групою безпеки (поширено у хмарних провайдерів), переконайтеся, що ці правила також оновлені для дозволу трафіку на портах 80 та 443.
Крок 5: Перевірка встановлення
Щоб підтвердити, що Nginx встановлено правильно і він обслуговує вміст, відкрийте веб-браузер і перейдіть на публічну IP-адресу вашого сервера:
http://your_server_ipВас повинна привітати сторінка привітання Nginx за замовчуванням, на якій відображається повідомлення *"Welcome to nginx!"*. Це підтверджує, що веб-сервер працює і доступний з інтернету.
Якщо ви не бачите сторінку привітання, перевірте наступне:
- Сервіс Nginx запущений (
sudo systemctl status nginx) - Правила брандмауера застосовані правильно
- IP-адреса вашого сервера правильна
- Жоден інший сервіс (такий як Apache) не займає порт 80
Крок 6: Налаштування блоків сервера Nginx
Nginx використовує блоки сервера (функціонально еквівалентні віртуальним хостам Apache) для визначення того, як він обробляє запити для різних доменів або поддоменів. Кожен блок сервера зазвичай зберігається як окремий файл конфігурації в каталозі /etc/nginx/conf.d/.
Основний файл конфігурації Nginx розташований у /etc/nginx/nginx.conf. Він містить директиву, яка автоматично завантажує всі файли .conf з каталогу conf.d, зберігаючи вашу конфігурацію модульною та легкою в управлінні.
Крок 6a: Створення нового файла конфігурації блоку сервера
Створіть новий файл конфігурації для вашого домену. Замініть example.com на ваше фактичне ім’я домену:
sudo nano /etc/nginx/conf.d/example.com.confДодайте наступну конфігурацію блоку сервера:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
# Logging
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
# Deny access to hidden files
location ~ /. {
deny all;
}
}Пояснення ключових директив:
| Директива | Опис |
|---|---|
listen 80 | Наказує Nginx прослуховувати вхідні з’єднання на порту 80 (HTTP) |
server_name | Визначає імена доменів, на які відповідає цей блок сервера |
root | Вказує каталог документів, де зберігаються файли веб-сайту |
index | Визначає файли за замовчуванням, які Nginx буде обслуговувати при запиті каталогу |
try_files | Намагається обслужити запитаний URI як файл, потім як каталог, і повертає 404, якщо ні один не існує |
access_log / error_log | Визначає окремі файли журналу для цього віртуального хоста для простішого налагодження |
Збережіть файл і вийдіть з редактора (Ctrl+X, потім Y, потім Enter у nano).
Крок 7: Створення кореневої директорії документів та тестового файлу
Створіть директорію кореневої папки документів, яку ви визначили в конфігурації блоку сервера:
sudo mkdir -p /var/www/example.com/htmlСтворіть простий index.html файл для перевірки правильної роботи блоку сервера:
echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.htmlВстановіть правильне володіння та дозволи, щоб Nginx міг читати файли:
sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/> Примітка щодо SELinux: CentOS 7 поставляється з увімкненим SELinux за замовчуванням. Якщо Nginx не може читати ваші веб-файли навіть з правильними дозволами, вам може знадобитися застосувати відповідний контекст SELinux:
> “`bash
> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/
> “`
Крок 8: Тестування конфігурації Nginx
Перед перезапуском Nginx для застосування нової конфігурації завжди перевіряйте синтаксис на помилки. Неправильно налаштований файл може вивести з ладу весь ваш веб-сервер.
Запустіть тест конфігурації:
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 для застосування змін:
sudo systemctl restart nginxКрім того, якщо ви хочете перезавантажити конфігурацію без розриву активних з’єднань (рекомендується для виробничих середовищ), використовуйте:
sudo systemctl reload nginxТепер перейдіть до вашого домену в браузері. Ви повинні побачити вашу користувацьку index.html сторінку.
Крок 9: Налаштування HTTPS з Let’s Encrypt
Запуск веб-сайту через простий HTTP піддає ваших користувачів потенційному підслуховуванню та атакам «людина посередині». Захист вашого сайту за допомогою HTTPS більше не є опціональним — це фундаментальна вимога для довіри користувачів, цілісності даних та рейтингу в пошукових системах.
Let’s Encrypt надає безплатні, автоматизовані та надійні SSL/TLS сертифікати. Ви також можете дослідити преміум SSL сертифікати від AlexHost для розширеної перевірки та варіантів з валідацією організації, які пропонують вищі рівні довіри для бізнес-веб-сайтів.
Встановлення Certbot та плагіна Nginx
sudo yum install certbot python2-certbot-nginx -yОтримання та встановлення SSL сертифіката
Запустіть Certbot з плагіном --nginx, який автоматично змінює вашу конфігурацію Nginx для включення HTTPS:
sudo certbot --nginx -d example.com -d www.example.comДотримуйтесь інтерактивних підказок:
- Введіть вашу адресу електронної пошти для сповіщень про поновлення
- Погодьтесь з Умовами обслуговування Let’s Encrypt
- Виберіть, чи перенаправляти трафік HTTP на HTTPS (настійно рекомендується — виберіть варіант 2)
Certbot автоматично:
- Отримає підписаний сертифікат від Let’s Encrypt
- Змінить вашу
/etc/nginx/conf.d/example.com.confдля включення директив SSL - Налаштує перенаправлення з HTTP на HTTPS
Після завершення перевірте конфігурацію HTTPS, відвідавши:
https://example.comВаш браузер повинен відобразити значок замка, що підтверджує, що з’єднання зашифровано.
Крок 10: Автоматизація поновлення сертифіката
Сертифікати Let's Encrypt дійсні протягом 90 днів. Якщо не поновити їх до закінчення терміну дії, ваш сайт буде показувати попередження про безпеку відвідувачам, що серйозно вплине на довіру користувачів та трафік.
Тестування процесу поновлення
Перед налаштуванням автоматизації перевірте, що процес поновлення працює правильно:
sudo certbot renew --dry-runУспішне тестування підтверджує, що автоматичне поновлення працюватиме без проблем.
Налаштування завдання Cron для автоматичного поновлення
Відкрийте кореневий crontab:
sudo crontab -eДодайте наступний рядок для перевірки та поновлення сертифікатів двічі на день (рекомендована частота):
0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Пояснення розкладу cron:
0 0,12 * * * — Запускається о півночі та в полудень щодня
--quiet — Придушує вивід, якщо не виникає помилка
--post-hook "systemctl reload nginx" — Перезавантажує Nginx після успішного поновлення для застосування нового сертифіката без простоїв
Збережіть та закрийте редактор crontab. Ваші SSL сертифікати тепер будуть поновлюватися автоматично, зберігаючи ваш сайт в безпеці без будь-якого ручного втручання.
Поради з оптимізації продуктивності Nginx на CentOS 7
Після завершення базового налаштування розглянете ці поліпшення конфігурації для максимізації продуктивності Nginx:
Увімкніть стиснення Gzip
Додайте наступне до вашого nginx.conf у блоці http {} для зменшення розміру відповідей, надісланих клієнтам:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
Налаштуйте кешування браузера
Додайте заголовки cache-control для статичних ресурсів, щоб зменшити навантаження на сервер і поліпшити час завантаження сторінки:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
Налаштуйте робочі процеси
У /etc/nginx/nginx.conf встановіть кількість робочих процесів, щоб вона відповідала кількості ядер CPU вашого сервера:
worker_processes auto;
worker_connections 1024;
> Для ресурсомістких додатків або веб-сайтів з високим трафіком розглянете можливість переходу на Виділені сервери від AlexHost, які забезпечують гарантовані ресурси CPU, RAM та сховища без ефекту шумного сусіда.
Керування кількома веб-сайтами за допомогою Nginx
Однією з найбільших переваг Nginx є його здатність розміщувати кілька веб-сайтів на одному сервері через блоки сервера. Для кожного додаткового домену просто:
Створіть новий .conf файл у /etc/nginx/conf.d/server_nameroot на відповідний корінь документаsudo nginx -t та sudo systemctl reload nginxЯкщо ви віддаєте перевагу графічному інтерфейсу для керування вашим веб-сервером, віртуальними хостами, базами даних та облікові записи електронної пошти, розгляньте VPS з cPanel — повністю керовану панель керування, яка спрощує адміністрування сервера без втрати гнучкості.
Крім того, дослідіть повний спектр Панелей керування VPS, доступних від AlexHost, включаючи Plesk, DirectAdmin та інші варіанти, придатні для різних робочих процесів та технічних переваг.
Усунення типових проблем Nginx на CentOS 7
| Проблема | Ймовірна причина | Рішення | |
|---|---|---|---|
| Nginx не запускається | Порт 80/443 уже використовується | Запустіть `sudo ss -tlnp | grep :80` щоб визначити конфліктуючий процес |
| Помилка 403 Forbidden | Неправильні дозволи файлів або контекст SELinux | Перевірте chmod/chown та застосуйте chcon для SELinux | |
| 502 Bad Gateway | Upstream-сервіс (PHP-FPM, Node.js) не запущений | Переконайтеся, що сервіс backend активний та сокет/порт правильні | |
| SSL-сертифікат не оновлюється | Certbot не може прив’язатися до порту 80 | Переконайтеся, що порт 80 відкритий та жоден інший процес його не блокує | |
| Зміни не вступають у силу | Конфігурація не перезавантажена | Запустіть sudo systemctl reload nginx після кожної зміни конфігурації |
Висновок
Ви успішно встановили, налаштували та захистили Nginx на CentOS 7. Ваш сервер готовий розміщувати веб-сайти з високою продуктивністю, ефективно обробляти одночасні з’єднання та надавати вміст через зашифровані HTTPS з’єднання — все це важливі якості для сучасного виробничого веб-середовища.
Ось резюме того, що було досягнуто:
- ✅ Оновлена система CentOS 7 та встановлений Nginx через репозиторій EPEL
- ✅ Запущена та увімкнена служба Nginx для автоматичного запуску при завантаженні
- ✅ Налаштований firewalld для дозволу трафіку HTTP та HTTPS
- ✅ Створений та налаштований користувацький блок сервера для домену
- ✅ Встановлені правильні дозволи файлів та контексти SELinux для кореневої папки документів
- ✅ Протестована конфігурація на помилки синтаксису перед застосуванням змін
- ✅ Захищений сайт безкоштовним SSL-сертифікатом Let’s Encrypt через Certbot
- ✅ Автоматизоване поновлення сертифіката за допомогою завдання cron
Утримання безпечного та високопродуктивного веб-сервера вимагає постійної уваги. Регулярно оновлюйте Nginx, моніторьте журнали доступу та помилок, а також переглядайте конфігурацію в міру розвитку вимог вашого сайту.
Якщо ви шукаєте надійну основу хостингу для своїх проектів на базі Nginx, AlexHost пропонує повний спектр рішень — від початкового Спільного веб-хостингу для менших сайтів до високопродуктивних VPS та виділеної інфраструктури для вимогливих додатків. Кожен план підтримується обладнанням корпоративного класу, цілодобовою технічною підтримкою та зобов’язанням щодо безперебійної роботи та безпеки.
на всіх хостингових послугах