Як встановити Nginx на Ubuntu

Nginx – найбільш популярний веб-сервер, на якому є можливість розміщувати об’ємні сайти з великим трафіком. На відміну від Apache, в Nginx робочі процеси обслуговуються одночасно безліччю з’єднань, мультиплексуючи їх викликами операційної системи, що забезпечує низьке споживання серверних ресурсів. Плюсом є також те, що він може використовуватися як зворотній проксі-сервер.
Давайте докладніше розглянемо і допоможемо вам розібратися з тим, як встановити nginx на ubuntu.
Налаштування веб-сервера Nginx після установки

Авторизуйтесь в систему під root-користувачем, щоб почати.
Пакет Nginx доступний в стандартному репозиторії системи Ubuntu.
Для початку оновимо в індекс пакетів (apt) (в разі, якщо це перша взаємодія з системою пакетування apt в поточній сесії):

apt update

Далі перейдемо до установки Nginx.

apt install nginx

У терміналі з’явиться список встановлених пакетів. Натисніть Y і Enter для продовження інсталяції, і Nginx буде встановлений з усіма його залежностями.

Налаштування фаервола UFW
Перед тим як тестувати Nginx, потрібно дозволити його трафік в брандмауері ufw. Під час інсталяції Nginx реєструє свій профіль в ufw, в зв’язку з чим відкриття трафіку не доставляє труднощів.

Відкрийте список профілів ufw:

ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Як результат отримуємо відображення трьох профілів Nginx:

Nginx Full: відкрити як незахищене з’єднання (80-й порт) так і захищене (443-й порт).
Nginx HTTP: відкрити виключно незахищене з’єднання (на 80 порт).
Nginx HTTPS: відкрити захищене з’єднання (порт 443).

Оскільки на Nginx спочатку не налаштована робота по захищеному з’єднанню, для початку включаємо трафік по 80 порту.

Для того, щоб включити виконуємо:

ufw allow 'Nginx HTTP'

Перевірка статусу профілю:

ufw status

Отримуємо висновок, що трафік HTTP дозволений:

Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

Тест веб-сервера
Після того як, встановимо Ubuntu 18, Nginx запуститься автоматично. Для перевірки того, що це дійсно так, дізнаємося його статус в ініціалізації systemd.

systemctl status nginx

Отримуємо інформацію про те, що Nginx активний.

Active: active (running) since Sat 2020-07-04 9:28:52 PDT; 2s ago

Другий спосіб – за допомогою посадкової сторінки Nginx. Її перевіряємо в браузері за IP-адресою, яку ви отримували в листі з даними доступів до сервера або по доменному імені.
Вводимо IP з листа в браузері, з метою упевнитися що все працює.
http://server_domain_or_IP
Отримуємо типову посадкову сторінку Nginx:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

Управління процесами 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

то можна сміливо переходити до виконання до операцій перезапуску Nginx`a.

Після того, як ми запам’ятали це сакральне правило, вивчимо необхідні базових команди з управління веб-сервером.
Для зупинки Nginx, виконайте:

systemctl stop nginx

Щоб запустити використовуємо:

systemctl start nginx

Щоб перезавантажити:

systemctl restart nginx

Для оновлення налаштувань (в поточній сесії) введіть команду:

systemctl reload nginx

По дефолту з запуском сервера відбувається автоматичне завантаження Nginx. Щоб відключити автоматичний запуск, виконайте:

systemctl disable nginx

Для відновлення автозапуску сервісу, використовуйте команду:

systemctl enable nginx

Перевірити включений або виключений автоматичний запуск:

systemctl is-enabled nginx

Налаштування віртуальних хостів
На веб-сервері Nginx є можливість використання віртуальних хостів (або по-іншому блоки server) для розділення налаштувань і створення потрібної кількості доменів на одному сервері.
Nginx по дефолту виділяє єдиний активний віртуальний хост, для обслуговування каталогу /var/www/html. У разі, якщо необхідно розміщувати більше одного сайту, необхідно додати нові віртуальні хости. Додамо окрему кореневу директорію для нашого нового домену.
Створіть каталог ваш_домен, скориставшись прапором -p для додавання батьківських каталогів:

mkdir -p /var/www/ваш_домен/html

Задамо власника кореневої директорії домену:

chown -R root:root /var/www/ваш_домен/html

Якщо ви створюєте окремого користувача для вашого сайту, то замість root-а вкажіть потрібного користувача.
Якщо не вносилися зміни в umask, то права будуть задані коректні, щоб перевірити:

chmod -R 755 /var/www/ваш_домен

Після перевірки створюємо шаблон сторінки index.html в редакторі vim:

vim /var/www/ваш_домен/html/index.html

Внесіть в файл:

<html>
<head>
<title> Добро пожаловать на ваш_домен!</title>
</head>
<body>
<h1>Success! VirtualHost для ваш_домен работает </h1>
</body>
</html>

Зберігаємо зміни і виходимо.

Налаштування, адміністрування серверних блоків

Для обслуговування контенту Nginx`а, створюємо файл конфігурації віртуального хоста з вірними директивами. Створимо новий файл /etc/nginx/sites-available/ваш_домен.

vim /etc/nginx/sites-available/ваш_домен

Внесіть в файл конфігурації зазначені рядки. Вони відповідають стандартним налаштуванням VirtualHost’а, але мають вірний домен і каталог:

server {
listen 80;
listen [::]:80;
root /var/www/ваш_домен/html;
index index.html index.htm index.nginx-debian.html;
server_name ваш_домен www.ваш_домен;
location / {
try_files $uri $uri/ =404;
}
}

Зверніть увагу, що root містить шлях нового каталогу, а server_name – новий домен, ваш_домен.
Зберігаємо внесені зміни і виходимо з редактора.
Активуйте файл, вказавши символьне посилання в каталозі sites-enabled:

ln -s /etc/nginx/sites-available/ваш_домен /etc/nginx/sites-enabled/

На даному етапі ви маєте два віртуальних хоста, які обслуговують запити клієнтів на базі директив listen і server_name:

  • ваш_домен обслуговуватиме запити для www.ваш_домен і ваш_домен.
  • default відповідатиме на запити по порту 80, якщо вони не відповідають іншим віртуальним хостам.

Щоб уникнути нестачі пам’яті, через додавання додаткових імен, редагуємо значення у файлі /etc/nginx/nginx.conf.
Відкриваємо файл:

vim /etc/nginx/nginx.conf Розкоментуємо рядок server_names_hash_bucket_size, прибравши #:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...

Перевіряємо коректність файлу конфігурації Nginx:

nginx -t

Зберігаємо корективи і виходимо.
Зміни вступлять в силу після перезавантаження Nginx:

systemctl restart nginx

Як результат, ваш сайт стане обслуговуватися Nginx`ом.
Перевірити коректність налаштувань ​​можна за посиланням http://ваш_домен.

Базові каталоги і файли Nginx

Контент
/var/www/html: вміщує контент сайту. Стандартно в ньому зберігається посадкова сторінка. У файлі конфігурації Nginx ви можете вносити зміни по каталогу.

Налаштування сервера
/etc/nginx: каталог налаштувань nginx (тут знаходяться всі конфігураційні файли).
/etc/nginx/nginx.conf: основний конфігураційний файл Nginx, містить глобальні налаштування веб-сервера.
/etc/nginx/sites-available: каталог, включає в себе блоки server (віртуальні хости) по кожному сайту окремо.
Щоб Nginx обробляв ці блоки, потрібно розмістити посилання на них в каталозі sites-enabled. Зазвичай вживається для настройки віртуальних хостів.
/etc/nginx/sites-enabled/: каталог, який зберігає включені блоки server. Для активації блоку, потрібно створити символьне посилання на файл, розміщений в каталозі sites-available.
/etc/nginx/snippets: містить фрагменти налаштувань (потенційно повторювані сегменти конфігурації)
Лог:
/var/log/nginx/access.log: лог зберігає запити, які надходять до веб-сервером Nginx (можливо задати іншу поведінку).
/var/log/nginx/error.log: відображає повідомлення про помилки Nginx ..
Висновок
У цьому гайді ми розібрали основні поради і рекомендації з налаштування web-сервера Nginx після установки.
Nginx готовий до обслуговування контенту вашого сайту.