01Що це таке і як це працює
Nginx використовує подієво-орієнтовану модель неблокуючого введення-виведення. Головний процес зчитує конфігураційний файл і запускає один або кілька робочих процесів. Кожен робочий процес може керувати тисячами одночасних з'єднань, використовуючи невеликий набір дескрипторів файлів. Коли надходить HTTP-запит, Nginx аналізує рядок запиту, порівнює URI із визначеними блоками location і або видає статичний файл із диска, або перенаправляє запит на сервер upstream за допомогою директиви proxy_pass. Потім відповідь повертається клієнту. Така архітектура дозволяє Nginx досягати високої пропускної здатності та низької затримки, споживаючи при цьому відносно мало пам'яті.
Nginx — це програма, яка приймає вебзапити та надсилає відповіді; її часто використовують для розміщення вебсайтів або перенаправлення запитів на інші сервери.
02Що з цим робити
Встановіть Nginx за допомогою менеджера пакетів вашої операційної системи або скомпілюйте його з вихідного коду. Після встановлення створіть блок сервера у /etc/nginx/sites‑available/, де вкажіть доменне ім'я, кореневу директорію та будь-які правила проксі або перенаправлення. Увімкніть сайт, створивши символьне посилання у /etc/nginx/sites‑enabled/, а потім перевірте конфігурацію за допомогою nginx -t. Якщо перевірка пройшла успішно, перезавантажте Nginx за допомогою systemctl reload nginx або надішліть сигнал HUP головному процесу. Для підвищення продуктивності встановіть worker_processes відповідно до кількості ядер CPU, увімкніть з'єднання keepalive та розгляньте можливість додавання proxy_cache для повторюваних запитів.
03Як це вимірюється або помічається
Nginx записує кожен запит до логу доступу (/var/log/nginx/access.log), фіксуючи IP клієнта, метод запиту, код стану та розмір відповіді. Помилки записуються у /var/log/nginx/error.log. Ви можете використовувати інструменти тестування навантаження, такі як ab (Apache Bench) або wrk, щоб надсилати одночасні запити та вимірювати затримку та пропускну здатність. Опціональний модуль nginx‑status надає вебсторінку, яка відображає активні з'єднання, загальну кількість запитів і поточний стан читання/запису, що корисно для моніторингу в реальному часі.
04Поширені помилки
- Пропуск
nginx -tперед перезавантаженням, що може призвести до помилки в конфігурації. - Використання директиви
rootза замовчуванням без файлуindex, що призводить до відображення списку файлів у директорії. - Пряме відкриття порту бекенд-додатка в інтернет замість маршрутизації через Nginx.
- Відсутність налаштування
client_max_body_sizeдля завантаження файлів, що призводить до помилок 413. - Неправильне налаштування
proxy_passіз похилою рискою в кінці, що змінює URI, який передається на upstream-сервер.
05Обмеження
Nginx оптимізований для роздачі статичних файлів та роботи як реверс-проксі, але він не є універсальним сервером додатків. Він не може безпосередньо виконувати код Python, Ruby або PHP; ці мови потребують окремого процесу, такого як uWSGI, Gunicorn або PHP-FPM. Вбудовані алгоритми балансування навантаження обмежені методами round-robin, least connections та IP hash; для складнішої маршрутизації можуть знадобитися зовнішні інструменти. Крім того, кожен робочий процес може обробляти обмежену кількість з'єднань, визначену параметром worker_connections, тому дуже висока конкурентність може потребувати налаштування або додаткових робочих процесів.
06Практичний приклад
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend:8080;
}
}
Запис вище написаний GetLoopLoop. Нижче — те, що про цей самий термін тримають незалежні каталоги. Жодне з цього не є джерелом цієї сторінки.
- Також називається
- engine x
- Запроваджено
- 2004
- Розробник
- Maxim Dounin, Сисоєв Ігор Володимирович
- Різновид
- веб-сервер, проксі-сервер, вільне програмне забезпечення
Той самий термін у Вікіпедії
Каталогізовано 40 мовами07Поширені запитання
Чим Nginx відрізняється від Apache?
Nginx використовує подієво-орієнтовану архітектуру для обробки багатьох одночасних з'єднань з низьким споживанням пам'яті, тоді як Apache зазвичай використовує процесний підхід. Це робить Nginx загалом швидшим для роздачі статичного контенту та виконання ролі реверс-проксі.
Чи варто використовувати Nginx як балансувальник навантаження чи як вебсервер?
Це залежить від потреб вашої інфраструктури, оскільки він може виконувати обидві ролі одночасно. Ви можете використовувати його для обслуговування ваших frontend-файлів, одночасно розподіляючи API-запити на різні backend-сервери.
Що станеться, якщо Nginx налаштовано неправильно?
Сервер, швидше за все, не зможе запуститися або повертатиме користувачам помилки 502 Bad Gateway та 403 Forbidden. Ви помітите це через невдалі перевірки стану (health checks) або перевіривши логи помилок у /var/log/nginx/error.log.
08Як про це питають уголос
Той самий термін словами, якими про нього питають асистента, а не набирають у рядку пошуку — написано із ситуації, тому кожне питання несе ту ситуацію, з якої виникло.
Nginx — це стандартне рішення для цього. Він може виступати як reverse proxy, щоб буферизувати запити та балансувати трафік між кількома екземплярами серверів для запобігання збоям.
Дуже часто це Nginx. Вам слід перевірити, чи запущена служба або чи не містить конфігураційний файл синтаксичну помилку, яка спричиняє збій.
Nginx найкраще відповідає цій вимозі. Його неблокуюча модель I/O спеціально розроблена для високоефективної доставки статичного контенту.