Как установить Nginx на Ubuntu 24

Установка Nginx на Ubuntu — одна команда apt: пакет есть в репозитории самой Ubuntu и сразу запускается. Инструкция — для Ubuntu Server 24.04 и 22.04. Ниже — ещё брандмауэр, первый свой сайт и более новые сборки Nginx с nginx.org.

Установка Nginx из репозитория Ubuntu

Зайдите на сервер по SSH пользователем, которому можно sudo, обновите список пакетов и поставьте Nginx. Служба запустится сама и будет подниматься после перезагрузки.

sudo apt update sudo apt install -y nginx nginx -v

Последняя команда покажет версию, например nginx version: nginx/1.24.0 (Ubuntu) на Ubuntu 24.04. Откройте в браузере http://<адрес сервера>: на странице по умолчанию написано «Welcome to nginx!».

Страница «Welcome to nginx!» в браузере после установки Nginx на Ubuntu

Как открыть порты 80 и 443 в брандмауэре

Брандмауэр Ubuntu, UFW, на свежей системе выключен. Проверьте:

sudo ufw status

Если там Status: active, разрешите Nginx: профиль Nginx Full открывает и HTTP (80), и HTTPS (443).

sudo ufw allow 'Nginx Full' sudo ufw status

Прежде чем включать UFW по SSH, разрешите сам SSH, иначе брандмауэр оборвёт ваше же подключение: sudo ufw allow OpenSSH

Как настроить первый сайт

В Ubuntu у каждого сайта свой файл в /etc/nginx/sites-available/, а Nginx читает те, на которые есть ссылка из /etc/nginx/sites-enabled/. Создайте папку для файлов сайта и файл настроек. Вместо example.com подставьте свой домен.

sudo mkdir -p /var/www/example.com echo '<h1>It works</h1>' | sudo tee /var/www/example.com/index.html sudo nano /etc/nginx/sites-available/example.com

Вставьте в файл этот текст, сохраните сочетанием Control-O и выйдите через Control-X:

/etc/nginx/sites-available/example.com
server { listen 80; listen [::]:80; server_name example.com www.example.com; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ =404; } }

Включите сайт, проверьте настройки и перечитайте их в Nginx:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

Проверка должна заканчиваться словами syntax is ok и test is successful. Если там ошибка, в ней будут файл и строка. Когда домен уже указывает на сервер, добавьте HTTPS с бесплатным сертификатом: как получить сертификат Let’s Encrypt через Certbot.

Как поставить свежий Nginx с nginx.org

Пакет Ubuntu получает исправления безопасности, но остаётся на одной версии, пока жив выпуск системы. Новее — в официальном репозитории nginx.org. Команды ниже — с его страницы установки: они добавляют ключ подписи nginx.org и репозиторий «stable», а затем ставят Nginx оттуда.

sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | sudo tee /etc/apt/sources.list.d/nginx.list echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx sudo apt update sudo apt install -y nginx sudo systemctl enable --now nginx nginx -v

Пакет с nginx.org приносит свой /etc/nginx/nginx.conf, который читает только /etc/nginx/conf.d/*.conf. Если поставить его поверх Nginx из Ubuntu, сайты из sites-enabled перестанут открываться, а служба останется остановленной — для этого две последние команды. Перенесите каждый сайт в /etc/nginx/conf.d/<имя>.conf, затем проверьте настройки и перечитайте их двумя последними командами из раздела о первом сайте.

Где лежат файлы Nginx

  • /etc/nginx/nginx.conf — главные настройки (процессы, журналы, gzip).
  • /etc/nginx/sites-available/ и /etc/nginx/sites-enabled/ — ваши сайты, по файлу на сайт (пакет Ubuntu).
  • /var/log/nginx/access.log и /var/log/nginx/error.log — запросы и ошибки.
  • /var/www/html/ — страница по умолчанию.
  • Проверить настройки: sudo nginx -t
  • Применить их, не обрывая соединения: sudo systemctl reload nginx

Если Nginx не запускается

  • bind() to 0.0.0.0:80 failed (98: Address already in use) — порт 80 занят другим веб-сервером, чаще всего Apache. Кто именно, покажет команда: sudo ss -tlnp | grep ':80' Если это Apache, остановите его: sudo systemctl disable --now apache2
  • Вместо вашей страницы открывается «Welcome to nginx!» — домен попал в сайт по умолчанию. Проверьте server_name в своём файле или уберите сайт по умолчанию: sudo rm /etc/nginx/sites-enabled/default Затем перечитайте настройки Nginx.
  • Снаружи страница не открывается — проверьте брандмауэр: sudo ufw status На облачном сервере проверьте ещё группу безопасности или брандмауэр провайдера для портов 80 и 443.
  • При любой другой ошибке смотрите последние строки журнала службы: sudo journalctl -u nginx -n 50 Затем — журнала ошибок: sudo tail -n 50 /var/log/nginx/error.log

Если вы работаете и на Mac

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ

Сборка мусора в MacWashing находит кэш всех знакомых ей программ, в том числе спрятанный внутри их данных, а ещё журналы, мусор Xcode и остатки удалённых программ. Она показывает, сколько места занимает каждая находка, и очищает всё за один раз. Всё спорное остаётся без галочки, пока вы не решите.

Бесплатная пробная версия · macOS 14 и новее

Вопросы и ответы

Как установить Nginx на Ubuntu?

Обновите список пакетов: sudo apt update Затем поставьте Nginx: sudo apt install nginx Он сразу запустится и покажет свою приветственную страницу на порту 80.

Чем reload отличается от restart?

reload перечитывает настройки и не трогает открытые соединения. restart останавливает и снова запускает службу. После правки сайта хватает reload, restart — только если reload не помог.

Какую версию Nginx выбрать?

Пакета Ubuntu хватает большинству сайтов, и он обновляется вместе с системой. Репозиторий nginx.org нужен, когда требуется что-то из более нового выпуска.