Подробное руководство по настройке redirect и rewrite в .htaccess: примеры 301/302/307/308 редиректов, правила mod_rewrite, оптимизация производительности, типо...
Блог компании 3v-Hosting
8 мин.
AlmaLinux 9 быстро закрепился в умах пользователей как замена старому доброму CentOS, в первую очередь там, где нужен предсказуемый сервер, где важна именно стабильность и отсутствие каких либо сюрпризов после обновлений. Чтобы вот поставил систему - и она ведёт себя ровно и предсказуемо на протяжении всего периода эксплуатации. Для любой продакшен среды это сильно упрощает жизнь.
Следующим шагом после установки ОС почти всегда бывает установка веб-сервера, ведь неважно, будет ли это сайт, API, обычный прокси перед контейнерами или вы просто хотите раздавать статику под фронт. По сути вариантов не так много, и чаще всего выбирают именно веб-сервер Nginx, что обусловлено незначительным потреблением ресурсов и скоростью его работы по определенным задачам, что позволяет справляться с нагрузкой, которая для Apache уже становится проблемой. Особенно это значимо для проектов на небольших VPS, где такая разница чувствуется сразу. Параллельно с этим он закрывает кучу вспомогательных, неосновных задач, таких как проксирование, балансировка или отдача статических файлов.
Поэтому в данной краткой статье давайте разберём процесс установки Nginx на AlmaLinux 9 - популярнейшую сборку, а также базовую его настройку и типичные ошибки при конфигурации.
На чистой AlmaLinux системе Nginx по умолчанию не установлен и логичным будет в первую очередь его установить. В AlmaLinux с этим всё просто, ведь базовые репозитории уже содержат нужный пакет и ничего дополнительно подключать не придётся.
В AlmaLinux используется стандартный менеджер пакетов DNF, через который устанавливаются почти любое дополнительное ПО.
Установка выполняется одной командой:
sudo dnf install nginx -y
Нужный пакет подтянется вместе со всеми зависимостями. Обычно это происходит быстро, в течение нескольких секунд.
После установки Nginx не запускается сам и это его нормальное поведение, ведь не гоже запускать ещё не настроенный веб-сервер. Система просто кладёт бинарники и конфиги на свои места, а дальше уже вы решаете, когда и как его включать.
Стандартный репозиторий AlmaLinux содержит стабильную версию веб-сервера, ведь мы же помним, что AlmaLinux - это стабильный дистрибутив. Стабильная версия работает нормально, но может слегка отставать от самых свежих обновлений. Поэтому если ваш проект нуждается в доступе к новейшим возможностям, тогда имеет смысл поставить Nginx из официального репозитория.
Делается это не сложно, просто сначала мы подключаем внешний репозиторий, а затем ставим нужный пакет как обычно. Только в этом случае система будет брать обновления уже не из родного репозитория AlmaLinux а от внешнего репозитория nginx.org.
Сначала ставим утилиты для работы с репозиториями и создаём файл, в котором укажем новый репо:
sudo dnf install dnf-utils -y sudo nano /etc/yum.repos.d/nginx.repo
Вставляем в этот файл следующую конфигурацию:
[nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/9/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key
Это mainline-ветка, в которой новые фичи появляются быстрее. Иногда туда попадают изменения, которые ещё не обкатаны в стабильной ветке. Для большинства задач это подходит без проблем, но действуйте с умом и не рискуйте зря - не для того-же вы выбрали стабильную ОС, чтобы захламить её нестабильным и непроверенным ПО.
После этого сохранили файл и дальше производим обычную установку:
sudo dnf install nginx -y
Если Nginx уже был установлен из стандартного репозитория, то пакет обновится до версии из официального источника. Иногда в таком случае может возникнуть конфликт версий. Решается он простым удалением старого пакета перед установкой нового.
Если в выводе команды есть строка active (running), обычно подсвеченная зеленым, значит Nginx успешно запущен и работает. Это означает, что всё в порядке, сервис стартовал, systemd не видит ошибок и ваш веб-сервер готов принимать запросы.
Если вместо этого вы видите надпись inactive (dead), то это значит, что Nginx установлен, но на данный момент не запущен. Такое бывает либо сразу после установки, пока вы его ещё не запустили, либо после ручной остановки сервиса. В этом случае попробуйте запустить его ещё раз командой:
sudo systemctl start nginx
Статус failed, обычно подсвеченный красным, говорит о том, что Nginx пытался запуститься, но получил ошибку.
Иногда можно увидеть activating. Это значит, что сервис ещё пытается стартовать. Если такой статус висит дольше нескольких секунд, что-то мешает нормальному запуску. Например, зависший процесс, проблема с сетью или некорректный конфиг.
Статус deactivating появляется во время остановки сервиса. Обычно он быстро исчезает. Если Nginx долго остаётся в таком состоянии, проверьте процессы и логи.
Для подробной диагностики используйте следующую команду, которая покажет записи в системном журнале, относящиеся конкретно к Nginx:
journalctl -u nginx -xe
Эта команда покажет последние сообщения systemd по Nginx и в большинстве случаев там уже видно, что именно сломалось, будь то занятый порт, ошибка синтаксиса, отказ в доступе или проблема с файлом конфигурации.
Итак, мы запустили веб-сервер Nginx на вашем сервере. Но то, что сервис запущен ещё не значит, что он реально принимает входящие соединения. Такое случается чаще, чем может показаться, поэтому сразу после старта стоит проверить, а слушает ли Nginx нужный порт.
Сначала смотрим, привязался ли процесс к 80 порту:
ss -tulnp | grep nginx
В выводе должна быть строка с указанием портов :80 или :443 и процессом nginx. Если её нет, то это означает, что сервер не слушает порт, а значит, либо он не запустился как нужно, либо порт уже занят другим сервисом. Тогда возвращаемся к предыдущему шагу и проверяем системный журнал и статус сервиса.
Если же порт слушается, тогда проверим ответ самого веб-сервера обратившись прямо к 80 порту прямо из консоли, с помощью утилиты curl:
curl -I http://localhost
Если всё в порядке, то вы получите HTTP-ответ, либо это будет код 200 OK, либо код 403 Forbidden. Если вы увидели второй вариант, не отчаивайтесь, он тоже в порядке вещей и означает, что Nginx работает, но не может отдать контент (например, нет нужных прав или необходимого запрашиваемого файла).
Если ответа нет вовсе или соединение не устанавливается, тогда очевидно, что проблема глубже. Ну а раз, как мы выяснили, сервис запущен и порт слушается, то тут уже необходимо переходить к проверке firewall'а, конфигурации веб-сервера или прослушиваемых интерфейсов, так как иногда сервер может быть настроен на прослушивание только localhost. Но давайте по порядку.
Итак, Nginx может быть запущен и даже слушать нужный порт, но снаружи сервер всё равно будет недоступен. Причиной может служить системный firewall. В AlmaLinux по умолчанию работает firewalld, и он блокирует входящие соединения, если их явно не разрешили. А мы ведь их ещё не разрешили. Исправим это упущение.
Нужно открыть порты для HTTP и HTTPS и проще всего сделать это через встроенные системные сервисы:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Как вы догадались - первая команда разрешает соединения на порт 80, а вторая - на порт 443. Флаг --permanent сохраняет правило, чтобы оно не пропало после перезагрузки. Перезагрузка firewall, последняя команда, применяет изменения.
Если этого не сделать, то ситуация будет выглядеть странной, когда локально всё работает, даже curl отвечает с нормальным кодом ответа, но с другого компьютера веб-сервер недоступен. Почти всегда дело именно в firewall.
После того, как мы добавили необходимые правила, открываем IP вашего сервера в браузере или выполняем на другом компьютере команду:
curl -I http://YOUR_SERVER_IP
Если ответ есть, страница открылась, то всё в порядке. Если же вы получили ошибку, тогда стоит пройтись по предыдущим шагам ещё раз.
Теперь давайте кратко ознакомимся с основными конфигурационными файлами и рабочими директориями, с которыми вам предстоит работать поначалу. Тут всё достаточно просто:
| Путь | Назначение |
|---|---|
| /etc/nginx/nginx.conf | основная конфигурация вашего веб-сервера |
| /etc/nginx/conf.d/ | конфигурации отдельных сайтов |
| /var/log/nginx/ | логи веб-сервера |
| /usr/share/nginx/html/ | директория по умолчанию для размещения файлов сайтов |
В дальнейшем, когда вы лучше ознакомитесь с Nginx, вы узнаете о других полезных файлах и директориях, необходимых для работы других функций веб-сервера.
Если же вы уже искушенный пользователь Nginx, то можете сказать, что тут чего-то не хватает, например директорий sites-available и sites-enabled.
Такая схема используется в дистрибутивах Debian и Ubuntu. Там конфиги лежат в sites-available, а в sites-enabled создаются симлинки на эти конфиги, только на активные сайты. Это удобно, когда нужно быстро включать и отключать проекты.
В AlmaLinux этого нет из коробки. Но при желании такую структуру можно сделать вручную, если вы уже привыкли к ней или управляете десятками сайтов.
Кстати о том, как установить Nginx на Ubuntu сервер - можно почитать тут.
После установки и включения Nginx отдаёт свою стандартную страницу, которая лежит в дефолтной директории (см. выше), и для реального сайта является абсолютно бесполезной. Чтобы сервер начал работать с вашим доменом, вам нужен отдельный конфиг, называемый virtual host.
В этой конфигурации, в этом отдельном файле вы говорите Nginx на какой домен он должен реагировать, откуда брать файлы сайте и как обрабатывать входящие запросы. Один файл - один сайт. На одном сервере у вас может быть несколько сайтов, которые все будут обслуживаться одним веб-сервером, потом таких конфигов может быть сколько угодно.
Вот минимальный пример конфигурационного файла сайта, который вы можете назвать как угодно и присвоить ему расширение .conf:
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Кратенько пробежимся по тому, что тут происходит.
listen 80 - эта инструкция указывает, какой порт слушать серверу, в нашем случае сервер слушает порт 80, HTTP; server_name - справа от этой инструкции мы должны указать домен, на который веб-сервер должен отвечать. Если домен в заголовке обращения не совпадает с указанным в этом блоке, то этот блок не сработает, а пакет будет обработан другим virtual host с нужным доменом; root - эта инструкция указывает путь к файлам вашего сайта; index - эта инструкция указывает, какой файл необходимо отдавать по умолчанию.
Блок location / - является базовым правилом обработки запросов. Сначала Nginx ищет файл по указанному пути, а если файла нет, тогда возвращает код ошибки 404.
Файлы с такими конфигами - виртуальными хостами - обычно кладут в директорию /etc/nginx/conf.d/, после чего проверяют конфигурацию и делают reload. И если DNS уже указывает на ваш сервер, то сайт откроется сразу.
Ну и напоследок обязательно стоит упомянуть о том, как проверить конфигурацию. Это делается командой:
sudo nginx -t
Ну а применение конфигурации после любых изменений выполняется командой:
sudo systemctl reload nginx
Всё, на этом этапе вы установили веб-сервер Nginx на сервер с ОС AlmaLinux9 и подняли ваш первый сайт. Если захотите глубже ознакомиться со всеми возможностями Ngixn - обязательно посетите их собственный сайт.
Проверьте, активен ли firewall (firewalld) и открыт ли порт 80 для HTTP, а также убедись, что сам сервис Nginx запущен и не привязан к локальному адресу (127.0.0.1) вместо публичного IP.
Откройте конфигурационный файл вашего сайта, найди директиву listen 80; и замени 80 на нужный порт, после чего не забудьте перезагрузить Nginx и разрешить новый порт в firewall.
Используйте команду sudo nginx -t, она проверит синтаксис всех конфигурационных файлов и покажет точный файл и строку с ошибкой, если она есть, что особенно полезно перед перезагрузкой сервера.
Скорее всего, порт 80 уже занят другой программой (например, Apache или Varnish), поэтому необходимо найти нужный процесс командой sudo ss -tlnp | grep :80 и либо остановить его, либо сменить порт для Nginx на другой, как описано выше.
Выполните команду sudo systemctl enable nginx - это добавит Nginx в автозагрузку, а затем командой sudo systemctl start nginx запустите его сейчас, чтобы при следующей перезагрузке сервера сайт сразу стал доступен.
Как вы успели убедиться Nginx на AlmaLinux 9 устанавливается достаточно просто, но для корректной работы важно сразу проверить несколько параметров, таких как настройки firewall, синтаксис конфигурации и статус самого сервиса.
В данной статье мы с вами разобрали типичные проблемы, кратко коснулись того, почему сервер может не открываться в браузере, как сменить порт при конфликтах, а также проверить конфигурацию перед перезагрузкой системы и настроить автозапуск веб-сервера. Следуя этим рекомендациям, вы быстро получите стабильно работающий веб-сервер без лишних сложностей.
А если ваш сайт вы планируете размещать за CloudFlare, тогда вам будет полезно ознакомиться и с этой статьей.
Как изменились кибератаки в 2025-2026 и почему под ударом оказались VPS, выделенные серверы и хостинг в целом. Разбираем реальные сценарии атак и что это значит...
Что такое UFW, его особенности и преимущества. Разбираем базовую настройку файервола в Linux: логика правил, открытие портов, управление доступом и типичные оши...
Что означает ошибка HTTP 500, почему она возникает и как её быстро диагностировать. Практические шаги, примеры и советы для серверов, CMS и приложений.