Подробный гайд: Установка и настройка Nginx на ALT Server

Пошаговое руководство по установке и настройке Nginx на ALT Server. Рассмотрены создание виртуальных хостов, подключение SSL и настройка брандмауэра.

2026.05.04                  


Подробный гайд: Установка и настройка Nginx на ALT ServerПодробный гайд: Установка и настройка Nginx на ALT Server

Примечание:

ALT Server использует пакетный менеджер apt-rpm (фронтенд apt-get), систему инициализации systemd и по умолчанию firewalld. Пакет nginx в ALT собираются из оригинальных исходников, поэтому структура конфигов и команды управления идентичны upstream-версии.


1. Подготовка системы

1. Обновите репозитории и установленные пакеты:
   sudo apt-get update
   sudo apt-get upgrade -y
2. Убедитесь, что порты 80/443 свободны (нет конфликта с Apache/httpd, который может быть предустановлен):
   sudo ss -tulpn | grep -E ':80|:443'
Если видите httpd или apache2, остановите и отключите его:
   sudo systemctl stop httpd
   sudo systemctl disable httpd

2. Установка Nginx

sudo apt-get install nginx -y
Проверка версии и сборки:
nginx -v
nginx -V  # покажет флаги компиляции и пути

В ALT Server пакет nginx устанавливает минимальный набор модулей. Если нужны дополнительные (например, mod_http_geoip, mod_http_v2, mod_mail), установите nginx-full или соберите из nginx-src (репозиторий sisyphus или p10/p11).


3. Запуск, автозагрузка и базовая проверка

sudo systemctl enable --now nginx
sudo systemctl status nginx

Проверьте синтаксис конфигурации:

sudo nginx -t

Откройте в браузере http://<IP_СЕРВЕРА>. Должна появиться стандартная страница Welcome to nginx!.

Логи:

  • Ошибки: /var/log/nginx/error.log
  • Доступ: /var/log/nginx/access.log

4. Настройка виртуальных хостов (Server Blocks)

В ALT Server по умолчанию используется директория /etc/nginx/conf.d/ для подключения дополнительных конфигов.

4.1. Создайте директорию для сайта

sudo mkdir -p /var/www/example.com/html
sudo chown -R nginx:nginx /var/www/example.com
sudo chmod -R 755 /var/www/example.com

4.2. Создайте конфиг хоста

sudo nano /etc/nginx/conf.d/example.com.conf
server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # Логирование отдельно для хоста
    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;
}

4.3. Примените изменения

sudo nginx -t && sudo systemctl reload nginx

Важно:

Никогда не делайте restart в продакшене без крайней необходимости. reload перечитывает конфиг без обрыва соединений.


5. Настройка SSL/TLS (Let's Encrypt)

5.1. Установка Certbot

В ALT p10/p11/Sisyphus пакеты доступны в основном репозитории:

sudo apt-get install certbot certbot-nginx -y

(Если пакет не найден, используйте python3-module-certbot-nginx или установите вручную из EPEL/Sisyphus)

5.2. Получение сертификата

sudo certbot --nginx -d example.com -d www.example.com

Certbot автоматически:

  • Подтвердит права на домен (HTTP-01 challenge)
  • Изменит ваш конфиг, добавив listen 443 ssl, пути к сертификатам и редирект с 80 на 443
  • Настроит автообновление через systemd-таймер

5.3. Проверка автообновления

sudo systemctl status certbot-renew.timer
sudo certbot renew --dry-run

6. Настройка брандмауэра

ALT Server по умолчанию использует firewalld.

sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Проверка:

sudo firewall-cmd --list-all

Если у вас nftables или iptables, откройте порты явно:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo service iptables save  # или nftables аналог

7. Управление и полезные команды

Команда Описание
sudo nginx -t Проверка синтаксиса конфигов
sudo systemctl reload nginx Перезагрузка конфигов без разрыва сессий
sudo systemctl restart nginx Полный перезапуск службы
sudo systemctl stop/start nginx Остановка/запуск
sudo nginx -s quit Корректное завершение рабочих процессов
sudo nginx -s reopen Перезапуск лог-файлов (после ротации)
journalctl -u nginx -f Просмотр логов в реальном времени

8. Диагностика типовых проблем

Ошибка Причина Решение
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) Порт занят другим процессом sudo ss -tulpn \| grep :80 → остановите конфликтующую службу или измените listen
403 Forbidden Неправильные права или нет index файла sudo chown -R nginx:nginx /var/www/..., проверьте autoindex off и наличие index.html
502 Bad Gateway (при проксировании) Бэкенд не отвечает или недоступен Проверьте proxy_pass, статус бэкенда, SELinux/AppArmor (в ALT обычно отключены)
nginx.service failed после reload Синтаксическая ошибка sudo nginx -t → исправьте строку из вывода ошибки
Сертификат не обновляется Блокировка файрволом или DNS Проверьте доступность .well-known/acme-challenge/ извне

9. Особенности ALT Server

  1. Пакетный менеджер: apt-get работает с RPM-базами. Команды идентичны Debian, но под капотом apt-rpm.
2. Структура конфигов:
  • Главный: /etc/nginx/nginx.conf
  • Дополнительные: /etc/nginx/conf.d/*.conf
  • Модули: /etc/nginx/modules/
    1. Пользователь и группа: nginx:nginx (не www-data как в Debian)
    2. Документация: /usr/share/doc/nginx/ и man nginx
5. Репозитории:
  • p10 / p11 — стабильные ветки (рекомендуется для продакшена)
  • sisyphus — rolling, самые свежие версии
    1. Ротация логов: Настраивается через /etc/logrotate.d/nginx (включено по умолчанию)

Чек-лист после установки

  • [ ] nginx -tsyntax is ok
  • [ ] systemctl is-active nginxactive
  • [ ] Файрвол открыт на 80/443
  • [ ] Страница отдаётся по HTTP
  • [ ] SSL настроен и валиден (https://your-domain)
  • [ ] certbot renew --dry-run проходит успешно
  • [ ] Логи пишутся в /var/log/nginx/
  • [ ] Права на web-директории: nginx:nginx, 755/644