Що таке Nginx і як він обслуговує сайти
Автор: Редакція Domeny.ForSale Опубліковано
Коротко: Nginx — це серверне програмне забезпечення, яке приймає запити браузерів і надає файли сайту або передає трафік застосунку. Воно також може обслуговувати зашифровані з’єднання HTTPS, розподіляти трафік між серверами та зберігати копії відповідей у кеші. На керованому хостингу за Nginx зазвичай відповідає провайдер; на власному сервері його налаштування може бути вашим завданням.
Яку роль відіграє Nginx під час відкриття сайту?
Nginx, що вимовляється як «engine-x», — це передусім сервер HTTP, тобто програма, яка обслуговує обмін даними для завантаження вебсторінок. Не слід плутати його з фізичним сервером або віртуальною машиною: Nginx працює на такому комп’ютері поряд з іншими програмами.
Коли ви вводите адресу сайту, DNS — система, що зіставляє доменні імена з мережевими адресами, — допомагає браузеру знайти сервер. Браузер встановлює з’єднання й надсилає запит, наприклад на головну сторінку. Якщо трафік надходить до Nginx, програма вибирає спосіб обробки відповідно до конфігурації, зокрема з урахуванням доменного імені та шляху в адресі.
Nginx може безпосередньо віддавати статичні файли, тобто заздалегідь збережені ресурси: документи HTML, таблиці стилів CSS, скрипти JavaScript або зображення. Проте він не є ані системою керування вмістом, ані базою даних. Сам Nginx не створює панель магазину й не обчислює вміст кошика — це завдання застосунку.
Зворотний проксі, HTTPS та інші застосування
Друга важлива функція Nginx — зворотний проксі (reverse proxy), тобто посередник, який приймає запити користувачів від імені застосунку. Браузер з’єднується з Nginx, а той передає запит відповідному процесу або серверу й повертає отриману відповідь. Завдяки цьому застосунку не потрібно безпосередньо приймати з’єднання з інтернету.
Типові застосування:
- Підтримка HTTPS. Nginx може використовувати сертифікат TLS для шифрування з’єднання з браузером. З’єднання між Nginx і застосунком потребує окремого налаштування й не стає зашифрованим автоматично.
- Балансування навантаження (load balancing). Nginx розподіляє запити між кількома екземплярами застосунку. Користь від такого рішення залежить також від того, чи здатен застосунок працювати в кількох екземплярах.
- Кешування (cache). Nginx може зберегти відповідь застосунку й використати її повторно, замість того щоб щоразу залучати застосунок. Для цього потрібні правила, які не дадуть приватному вмісту потрапити до інших користувачів.
- Перенаправлення. Nginx може перенаправляти відвідувачів із HTTP на HTTPS або зі старої адреси на нову, якщо адміністратор налаштує його відповідним чином.
Nginx використовує подієву архітектуру: робочий процес може обслуговувати багато з’єднань, реагуючи на готовність даних до читання або запису. Це допомагає ефективно обробляти одночасний трафік, але не означає, що саме встановлення програми прискорить будь-який сайт. Повільні запити до бази даних і надалі можуть затримувати відповіді.
Приклад: магазин і застосунок за Nginx
Уявіть магазин, у якому Nginx обслуговує домен mahazyn.example. Запит на фотографію товару може бути оброблений читанням файлу з диска. Натомість запит на кошик надходить до застосунку, який перевіряє сеанс користувача, отримує дані й готує відповідь.
У випадку WordPressa код PHP зазвичай виконує PHP-FPM — окрема програма, що керує процесами PHP. Nginx передає їй відповідні запити через протокол FastCGI. Для застосунку, написаного на Node.js або Python, Nginx може передавати трафік через HTTP до сервера застосунку, що працює на локальному порту.
Такий розподіл допомагає діагностувати проблеми. Якщо зображення відображаються, але кошик повертає помилку, Nginx може працювати правильно, а збій — стосуватися застосунку. Помилка 502 Bad Gateway часто означає, що посереднику не вдалося отримати коректну відповідь від сервісу за ним; причину потрібно з’ясувати за журналами, тобто записами роботи Nginx і застосунку.
Не слід бездумно вмикати кешування для всього магазину. Кошик, кабінет клієнта й відповіді з персональними даними потрібно належним чином виключити з кешування або застосувати до них точні правила ізоляції.
Nginx чи Apache — що важливо для вибору?
Apache HTTP Server — ще один популярний сервер HTTP. Обидва рішення можуть обслуговувати сайти й бути посередниками в обміні даними із застосунками. Вибір не зводиться до правила «Nginx швидкий, Apache повільний»: важливі характер трафіку, конфігурація, застосунок і досвід адміністратора.
Практична відмінність стосується файлів .htaccess, які в Apache можуть містити локальні правила, наприклад перенаправлення. Nginx їх не читає. Тому під час перенесення сайту потрібно перенести необхідні правила до конфігурації Nginx, а не лише скопіювати файли сайту.
Nginx і Apache також можуть працювати разом: перший приймає трафік, а другий обробляє частину запитів. Тому сама інформація «хостинг використовує Nginx» не описує всієї конфігурації й не гарантує певної продуктивності.
Чи потрібно самостійно налаштовувати Nginx?
На спільному або керованому хостингу запитайте провайдера, хто відповідає за HTTPS, перенаправлення, кешування та правила, потрібні застосунку. Можливо, усі необхідні налаштування ви зможете виконати в панелі керування без доступу до конфігурації сервера.
На власному VPS, тобто віртуальному сервері, ваша відповідальність зазвичай охоплює встановлення, оновлення, сертифікати й діагностику. Перед зміною конфігурації збережіть копію її робочого варіанта. Команда nginx -t перевіряє правильність синтаксису й доступність зазначених файлів; однак вона не підтверджує, що застосунок працює правильно або що правила безпечні.
Після успішної перевірки перезавантажте конфігурацію, а потім перевірте сайт, вхід до облікового запису, перенаправлення й журнали помилок. Точні шляхи до файлів і команди керування службою звірте з документацією Nginx та дистрибутива операційної системи, який ви використовуєте: вони залежать від способу встановлення.
Дивіться також: Що таке 2FA?
