Установка Nginx на Ubuntu/Debian: пошаговое руководство и настройка с Zabbix | AdminWiki

Установка Nginx: Полное руководство для Ubuntu, Debian и интеграция с Zabbix

18 декабря 2025 6 мин. чтения #debian #devops #linux #nginx #ubuntu #zabbix #веб-сервер #установка

Представь, что тебе нужно развернуть быстрый и надежный веб-сервер для проекта. Nginx — это мощное решение, которое справляется с высокими нагрузками и легко настраивается. В этой статье я, как Senior DevOps, покажу тебе все шаги: от базовой установки до продвинутой конфигурации с мониторингом.

Что такое Nginx и зачем он нужен?

Nginx — это высокопроизводительный HTTP-сервер и обратный прокси. В отличие от Apache, он использует асинхронную архитектуру, что делает его идеальным для сайтов с высокой посещаемостью. Сегодня мы разберем установку nginx на двух самых популярных дистрибутивах.

Важно: Все команды в статье предполагают, что у тебя есть доступ к терминалу с правами суперпользователя (sudo).

Подготовка системы перед установкой

Перед тем как начать установку nginx ubuntu или debian, обнови репозитории пакетов. Это гарантирует, что ты получишь последние стабильные версии.

bash
sudo apt update
sudo apt upgrade -y

Установка Nginx на Ubuntu

Процесс установки nginx на Ubuntu максимально прост благодаря встроенным репозиториям.

bash
sudo apt install nginx -y

После установки проверь статус службы:

bash
sudo systemctl status nginx
Если сервер не запустился автоматически, выполни: sudo systemctl start nginx и sudo systemctl enable nginx для автозапуска.

Установка Nginx на Debian

Установка nginx debian практически идентична Ubuntu, но иногда требует дополнительных шагов.

bash
sudo apt install nginx -y
Внимание: На некоторых старых версиях Debian пакет nginx может называться nginx-light или nginx-full. Используй apt search nginx для проверки.

Базовая настройка и проверка работы

После установки давай проверим, что Nginx работает корректно.

bash
# Проверка версии
nginx -v

# Проверка синтаксиса конфигурации
sudo nginx -t

# Перезагрузка конфигурации без простоя
sudo systemctl reload nginx

Открой браузер и перейди по адресу http://IP_ТВОЕГО_СЕРВЕРА. Ты должен увидеть стандартную страницу приветствия Nginx.

Настройка виртуальных хостов (серверных блоков)

В Nginx вместо виртуальных хостов Apache используются server blocks. Создадим конфигурацию для тестового сайта.

bash
sudo nano /etc/nginx/sites-available/example.com
config
server {
    listen 80;
    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;
    }
    
    # Базовые настройки безопасности
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
}

Активируем конфигурацию и создадим директорию сайта:

bash
# Создаем символическую ссылку
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# Создаем директорию для сайта
sudo mkdir -p /var/www/example.com/html

# Создаем тестовую страницу
sudo echo "

Hello from Nginx!

" > /var/www/example.com/html/index.html # Проверяем конфигурацию и перезагружаем sudo nginx -t sudo systemctl reload nginx

Настройка SSL/TLS с Let's Encrypt

Современные сайты требуют HTTPS. Установим Certbot для автоматического получения SSL-сертификатов.

bash
# Установка Certbot для Nginx
sudo apt install certbot python3-certbot-nginx -y

# Получение сертификата
sudo certbot --nginx -d example.com -d www.example.com

Автоматическое обновление сертификатов

Certbot автоматически добавляет задание в cron. Проверить можно командой:

bash
sudo systemctl list-timers | grep certbot

Интеграция Nginx с Zabbix для мониторинга

Теперь разберем установку zabbix nginx для мониторинга производительности веб-сервера.

Установка и настройка Zabbix Agent

Сначала установим Zabbix Agent на сервер с Nginx:

bash
# Добавляем репозиторий Zabbix
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo apt update

# Устанавливаем Zabbix Agent
sudo apt install zabbix-agent -y

Настройка мониторинга Nginx в Zabbix

Zabbix может мониторить статус Nginx через stub_status модуль. Добавим его в конфигурацию:

config
# В конфигурации Nginx добавляем
location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;  # Разрешаем только localhost
    allow 192.168.1.0/24;  # И сеть Zabbix сервера
    deny all;
}

Настройка Zabbix Agent для сбора метрик:

config
# В /etc/zabbix/zabbix_agentd.conf добавляем
UserParameter=nginx.status[*],curl -s http://127.0.0.1/nginx_status | grep "$1" | awk '{print $$2}'
UserParameter=nginx.active_connections,curl -s http://127.0.0.1/nginx_status | awk '/Active connections/ {print $$3}'
UserParameter=nginx.requests,curl -s http://127.0.0.1/nginx_status | awk '/^\s[0-9]+\s[0-9]+\s[0-9]+/ {print $$2}'
После изменения конфигураций не забудь перезагрузить обе службы: sudo systemctl reload nginx и sudo systemctl restart zabbix-agent.

Оптимизация производительности Nginx

Вот ключевые параметры для настройки в /etc/nginx/nginx.conf:

Параметр Рекомендуемое значение Описание
worker_processes auto Автоматически определяет количество ядер CPU
worker_connections 1024 Максимальное количество соединений на воркер
keepalive_timeout 65 Таймаут keep-alive соединений
gzip on Включено Сжатие ответов для экономии трафика

Безопасность Nginx

  • Регулярно обновляй Nginx: sudo apt update && sudo apt upgrade nginx
  • Используй fail2ban для защиты от брутфорса
  • Настрой корректные права доступа к файлам конфигурации
  • Отключай ненужные модули в сборке
  • Используй Security Headers (как в примере выше)

Частые проблемы и их решение

Ошибка: "Address already in use"

Решение: Проверь, какой процесс использует порт 80 или 443:

bash
sudo lsof -i :80
sudo lsof -i :443

Ошибка конфигурации после изменений

Решение: Всегда проверяй синтаксис перед перезагрузкой:

bash
sudo nginx -t

Nginx не запускается после перезагрузки

Решение: Проверь логи для диагностики:

bash
sudo journalctl -u nginx -f
sudo tail -f /var/log/nginx/error.log

Полезные команды для повседневной работы

bash
# Просмотр активных конфигураций
ls -la /etc/nginx/sites-enabled/

# Просмотр логов в реальном времени
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

# Проверка загруженных модулей
nginx -V 2>&1 | grep --color 'module'

# Горячая перезагрузка (без разрыва соединений)
sudo systemctl reload nginx

# Полная перезагрузка
sudo systemctl restart nginx

# Проверка открытых портов
sudo netstat -tulpn | grep nginx

Поздравляю! Теперь ты знаешь не только как выполнить установку nginx, но и как настроить его для production-среды, обеспечить безопасность и мониторинг через Zabbix. Эти навыки критически важны для любого DevOps-инженера.

Помни: лучшая конфигурация — та, которая соответствует твоим конкретным требованиям. Начинай с базовых настроек, мониторь метрики и оптимизируй постепенно. Удачи в освоении Nginx!

Поделиться:
Сохранить гайд? В закладки браузера