Nginx — це веб-сервер, розроблений як швидкий, ефективний і сумісний практично з усім, що ви можете собі уявити. Особисто я досить часто ним користуюся, і, як тільки ви його зрозумієте, його насправді досить легко встановити та налаштувати. З цією метою я написав цей посібник для початківців.
Ось короткий виклад того, яку функціональність має Nginx:
Базовий веб-сервер
Зворотний проксі для спрямування трафіку на кілька сайтів
Вбудований балансир навантаження для керування трафіком на кількох веб-сайтах
Вбудоване кешування файлів для збільшення швидкості
WebSockets
Підтримка FastCGI
І, звичайно, IPv6
Це чудово! Тож просто sudo dnf install nginx, чи не так? Так, це приблизно так, але ми включили кілька корисних порад, які допоможуть вам почати.
Після завершення встановлення запустіть службу nginx і ввімкніть її автоматичний запуск після перезавантаження:
sudosystemctlenable--nownginx
Щоб перевірити, чи встановлено останню версію Nginx (принаймні, останню версію зі сховищ Rocky), виконайте:
nginx-v
Звідти ви можете просто почати перекидати HTML-файли в каталог /usr/share/nginx/html/, щоб створити простий статичний веб-сайт. Файл конфігурації веб-сайту/віртуального хосту за умовчанням називається «nginx.conf» і знаходиться в /etc/nginx/. Він також містить кілька інших базових конфігурацій сервера Nginx, тому навіть якщо ви перемістите фактичну конфігурацію веб-сайту в інший файл, ви, ймовірно, залишите решту "nginx.conf" недоторканою.
Примітка
У старих версіях цього посібника детально описано, як встановити пакет nginx-mainline з ERLepo. Однак це вже не є опцією. У більшості випадків версії Nginx у сховищах Rocky більш ніж достатньо, забезпечуючи стабільну базу з портованими виправленнями безпеки. Ті, хто все ще хоче використовувати гілку nginx-mainline, можуть слідувати цьому посібнику від LinuxCapable. Зауважте, що використання nginx-mainline зазвичай цілком життєздатне, але не підтримується.
Якщо ви інсталюєте Nginx на такий контейнер, як LXD/LXC або Docker, ви можете поки що пропустити цю частину. Брандмауер має оброблятися головною ОС.
Ймовірно, ви нічого не отримаєте, якщо спробуєте переглянути веб-сторінку за IP-адресою чи доменним іменем свого комп’ютера з іншого комп’ютера. Що ж, це буде так, якщо у вас є та працює брандмауер.
Щоб відкрити необхідні порти, щоб ви могли «бачити» свої веб-сторінки, ми використаємо вбудований брандмауер Rocky Linux, firewalld. Для цього використовується команда firewalldfirewall-cmd. Є два способи зробити це: офіційний і ручний. У цьому випадку найкращим є офіційний спосіб, але ви повинні знати обидва для довідки в майбутньому.
Офіційний спосіб відкриває брандмауер для служби http, яка, звичайно, є службою, яка обробляє веб-сторінки. Просто запустіть це:
–-add-port=80/tcp повідомляє брандмауеру приймати вхідні з’єднання через порт 80, якщо вони використовують протокол керування передачею, який вам потрібен у цьому випадку.
Щоб повторити процес трафіку SSL/HTTPS, повторно запустіть команду та змініть службу та/або номер порту.
sudofirewall-cmd--permanent--zone=public--add-service=https
# Or, in some other cases:
sudofirewall-cmd--permanent--zone=public--add-port=443/tcp
Ці конфігурації не почнуть діяти, доки ви не примусово усунете проблему. Для цього скажіть firewalld перезапустити свої конфігурації, наприклад:
sudofirewall-cmd--reload
Примітка
Імовірність того, що це не спрацює, дуже мала. У тих рідкісних випадках змусьте firewalld виконувати ваші ставки за допомогою старої функції вимкнути і знову ввімкнути.
systemctlrestartfirewalld
Щоб переконатися, що порти додано правильно, запустіть firewall-cmd --list-all. Правильно налаштований брандмауер виглядатиме приблизно так:
І це має бути все, що вам потрібно, з точки зору брандмауера.
Тепер ви зможете побачити веб-сторінку, яка виглядає приблизно так:
It’s not much at all, but it means the server is working. Ви також можете перевірити, чи ваша веб-сторінка працює з командного рядка за допомогою:
curl-Ihttp://[your-ip-address]
Створення користувача сервера та зміна кореневої папки веб-сайту¶
Хоча ви можете перемістити свій веб-сайт у каталог за замовчуванням і перейти (і це може бути добре для Nginx, коли він працює всередині контейнера або на сервері тестування/розробки), це не те, що ми називаємо найкращою практикою. Натомість доцільно створити конкретного користувача Linux у вашій системі для вашого веб-сайту та помістити файли веб-сайту в каталог, створений спеціально для цього користувача.
Якщо ви хочете створити кілька веб-сайтів, гарною ідеєю буде створення різних користувачів і кореневих каталогів для організації та безпеки.
У цьому посібнику у мене буде лише один користувач: на ім’я «www». Вирішити, куди розмістити файли веб-сайту, стає складніше.
Ви можете розмістити файли веб-сайту в кількох місцях залежно від налаштувань сервера. Якщо ви користуєтеся «голим металом» (фізичним) сервером або встановлюєте nginx безпосередньо на VPS, можливо, у вас запущено Security Enhanced Linux (SELinux). SELinux — це інструмент, який значною мірою захищає вашу машину, але він також визначає, де ви можете розміщувати певні речі, наприклад веб-сторінки.
Отже, якщо ви встановлюєте nginx безпосередньо на свій комп’ютер, ви захочете розмістити свої веб-сайти в підкаталогах кореневої папки за замовчуванням. У цьому випадку кореневою системою за замовчуванням є /usr/share/nginx/html, тому веб-сайт для користувача «www» може перейти до /usr/share/nginx/html/www.
Однак, якщо ви використовуєте nginx у такому контейнері, як LXD/LXC, SELinux, ймовірно, не буде встановлено, і ви можете розмістити свій файли, де завгодно. У цьому випадку я хочу помістити всі файли веб-сайту користувача в каталог у звичайній домашній папці, наприклад: /home/www/.
Я продовжу цей посібник так, ніби SELinux встановлено. Просто змініть те, що вам потрібно, залежно від вашого випадку використання. Ви також можете дізнатися більше про те, як працює SELinux, у нашому посібнику на цю тему.
Зробіть користувача під назвою «www» (відповідно до середнього фрагмента тексту),
помістити всі його файли в /usr/share/nginx/html/www,
і додайте його до таких груп: «nginx» як додаткову, «www» як основну.
Прапорець --system говорить, що користувач не є людиною, він зарезервований для системи. Якщо ви хочете створити облікові записи людей для керування різними веб-сайтами, це зовсім інший посібник.
--shell=/bin/false гарантує, що ніхто не зможе навіть спробувати увійти як користувач «www».
Група «nginx» робить справжню магію. Це дозволяє веб-серверу читати та змінювати файли, які належать користувачеві «www» і групі користувачів «www». Додаткову інформацію див. у посібнику з керування користувачами Rocky Linux.
Тепер, коли у вас є новий обліковий запис користувача, настав час змусити nginx шукати файли вашого веб-сайту в цій папці. Знову візьміть свій улюблений текстовий редактор.
Наразі просто запустіть:
sudonano/etc/nginx/conf.d/default.conf
Коли файл відкрито, знайдіть рядок, який виглядає як root /usr/share/nginx/html;. Змініть його на вибрану кореневу папку веб-сайту, наприклад. root /usr/share/nginx/html/www; (або /home/www, якщо ви запускаєте nginx у контейнерах, як я ). Збережіть і закрийте файл, а потім перевірте конфігурацію nginx, щоб переконатися, що ви не пропустили крапку з комою чи щось інше:
nginx-t
Якщо ви отримали наступне повідомлення про успіх, все пройшло правильно:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Потім виконайте м’який перезапуск сервера за допомогою:
sudosystemctlreloadnginx
Примітка
У малоймовірному випадку, коли м’який перезапуск не спрацює, зробіть наступне:
sudosystemctlrestartnginx
Будь-які файли HTML у вашій новій кореневій папці тепер можна переглядати у вашому браузері.
Дозволи потрібно встановити правильно, щоб nginx міг читати, записувати та виконувати будь-які файли в каталозі веб-сайту.
По-перше, переконайтеся, що всі файли в кореневій папці належать користувачу сервера та його групі користувачів з:
sudochown-Rwww:www/usr/share/nginx/html/www
А потім, щоб переконатися, що користувачі, які хочуть переглядати ваш веб-сайт, можуть бачити сторінки, ви повинні виконати ці команди (і так, ці крапки з комою мають значення):
Наближається час, коли веб-переглядачі можуть перестати дозволяти людям переглядати сайти без сертифікатів, тому переконайтеся, що ви отримуєте по одному для кожного сайту.
Виберіть найбільший номер у списку та ввімкніть його модуль так:
sudodnfmoduleenablenginx:1.20
Вас запитають, чи хочете ви це зробити, тому виберіть Y, як зазвичай. Потім скористайтеся командою за замовчуванням для встановлення nginx:
sudodnfinstallnginx
Потім ви можете ввімкнути службу та налаштувати сервер, як зазначено вище.
Примітка
Файл конфігурації за замовчуванням у цьому випадку знаходиться в базовій папці конфігурації nginx за адресою /etc/nginx/nginx.conf. Проте коренева папка веб-сайту та сама.
Базові встановлення та налаштування nginx прості, навіть якщо отримати останню версію складніше, ніж мало б бути. Але дотримуйтесь інструкцій, і ви матимете один із найкращих варіантів сервера, який швидко запрацює.
Тепер вам потрібно піти і створити веб-сайт? Скільки це може зайняти, ще десять хвилин? Тихо ридає у Web Designer
Author: Ezequiel Bruni
Contributors: Antoine Le Morvan, Steven Spencer, Ganna Zhyrnova