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

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

Настройка веб-сервера — это одна из базовых задач, с которой сталкивается практически каждый системный администратор или DevOps-инженер. Nginx давно стал де-факто стандартом для современных веб-проектов благодаря своей производительности, гибкости и относительной простоте настройки. С выходом Ubuntu 24 процесс установки и конфигурации стал ещё более straightforward, но есть нюансы, которые стоит знать для получения максимальной отдачи от этой связки.

В этом руководстве мы пройдём весь путь от чистой системы до работающего веб-сервера с правильной конфигурацией безопасности и оптимизации производительности. Разберём не только базовую установку, но и тонкие настройки, которые помогут избежать типичных подводных камней и сразу получить production-ready решение.

Почему именно Nginx и Ubuntu 24?

Nginx обрабатывает более 400 миллионов сайтов по всему миру, что составляет около 33% от всех веб-серверов. Ubuntu 24 LTS принесла множество улучшений в области безопасности и производительности, включая обновлённые версии системных библиотек и более агрессивные настройки файрвола по умолчанию.

Основные преимущества этой связки:

  • Производительность: Nginx показывает лучшие результаты при обработке статического контента и работе с большим количеством одновременных соединений
  • Стабильность: Ubuntu 24 LTS получит поддержку до 2029 года
  • Безопасность: Встроенная поддержка современных протоколов и cipher suites
  • Гибкость: Отличная экосистема модулей и простота интеграции с другими сервисами

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

Перед установкой Nginx важно подготовить систему и обновить пакеты. Если у вас ещё нет VPS с Ubuntu 24, рекомендую взять сервер здесь — для большинства задач хватит базовой конфигурации.

sudo apt update && sudo apt upgrade -y
sudo apt install curl wget gnupg2 software-properties-common -y

Также стоит проверить, что у нас достаточно места на диске и настроен правильный timezone:

df -h
sudo timedatectl set-timezone Europe/Moscow

Установка Nginx: три способа

Существует несколько способов установки Nginx, каждый со своими плюсами и минусами:

Способ Плюсы Минусы Рекомендуется для
Из репозитория Ubuntu Простота, стабильность Не самая свежая версия Продакшн-серверы
Из официального репозитория Nginx Актуальная версия Чуть сложнее настройка Когда нужны новые фичи
Компиляция из исходников Максимальная кастомизация Сложность, время Специфичные требования

Способ 1: Установка из репозитория Ubuntu (рекомендуется)

Самый простой и надёжный способ для большинства случаев:

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

Проверяем статус:

sudo systemctl status nginx
nginx -v

Способ 2: Установка из официального репозитория Nginx

Если нужна самая свежая версия:

curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
echo "deb https://nginx.org/packages/ubuntu/ noble nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update
sudo apt install nginx -y

Базовая конфигурация и структура файлов

После установки Nginx создаёт стандартную структуру конфигурационных файлов:

/etc/nginx/
├── nginx.conf              # Основной конфигурационный файл
├── sites-available/        # Доступные сайты
├── sites-enabled/          # Активные сайты (симлинки)
├── conf.d/                 # Дополнительные конфигурации
└── snippets/               # Переиспользуемые фрагменты

Основные команды для управления:

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

# Перезагрузка конфигурации без остановки
sudo nginx -s reload

# Управление сервисом
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx

Настройка файрвола

Ubuntu 24 поставляется с более строгими настройками ufw по умолчанию. Нужно открыть порты для веб-трафика:

sudo ufw allow 'Nginx Full'
sudo ufw allow ssh
sudo ufw --force enable
sudo ufw status

Nginx Full включает порты 80 и 443. Если нужно более гранулярное управление:

sudo ufw allow 'Nginx HTTP'      # только 80
sudo ufw allow 'Nginx HTTPS'     # только 443

Создание первого виртуального хоста

Создаём конфигурацию для нашего сайта:

sudo nano /etc/nginx/sites-available/example.com

Базовая конфигурация:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html index.htm index.php;

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

    # Безопасность
    location ~ /\.ht {
        deny all;
    }

    # Логи
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

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

sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com

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

Nginx на Ubuntu 24 работает!

” > /var/www/example.com/index.html # Активируем сайт sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

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

Nginx из коробки работает неплохо, но можно существенно улучшить производительность правильной настройкой. Редактируем основной конфигурационный файл:

sudo nano /etc/nginx/nginx.conf

Оптимизированная конфигурация:

user www-data;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;

events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Производительность
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    keepalive_requests 100;

    # Gzip сжатие
    gzip on;
    gzip_vary on;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private must-revalidate auth;
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/javascript
        application/xml+rss
        application/json;

    # Безопасность
    server_tokens off;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    include /etc/nginx/sites-enabled/*;
}

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

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

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

Настройка автоматического обновления сертификатов:

sudo crontab -e
# Добавляем строку:
0 12 * * * /usr/bin/certbot renew --quiet

Проверяем автообновление:

sudo certbot renew --dry-run

Мониторинг и логирование

Правильная настройка логирования критически важна для диагностики проблем и анализа трафика:

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

# Ротация логов
sudo logrotate -f /etc/logrotate.d/nginx

Для продвинутого мониторинга можно настроить модуль статистики:

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

Типичные проблемы и их решения

Вот список наиболее частых проблем, с которыми приходится сталкиваться:

Проблема Симптом Решение
Permission denied 403 Forbidden Проверить права доступа: sudo chown -R www-data:www-data /var/www/
Порт уже занят bind() failed Проверить процессы: sudo lsof -i :80
Конфигурация не применяется Старая страница Проверить синтаксис: sudo nginx -t и перезагрузить
SSL не работает Certificate error Проверить права на сертификат: sudo chmod 644 /etc/letsencrypt/live/*/fullchain.pem

Интеграция с другими сервисами

Nginx отлично работает в связке с другими сервисами. Вот несколько популярных сценариев:

Nginx + PHP-FPM

sudo apt install php8.3-fpm -y

# Добавляем в конфигурацию сайта:
location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Nginx как reverse proxy

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Load balancing

upstream backend {
    server 192.168.1.100:80 weight=3;
    server 192.168.1.101:80 weight=2;
    server 192.168.1.102:80 backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

Автоматизация и скрипты

Для автоматизации развёртывания можно создать простой скрипт:

#!/bin/bash
# deploy_nginx.sh

DOMAIN=$1
ROOT_DIR="/var/www/$DOMAIN"

if [ -z "$DOMAIN" ]; then
    echo "Usage: $0 domain.com"
    exit 1
fi

# Создаём директорию сайта
sudo mkdir -p $ROOT_DIR
sudo chown -R $USER:$USER $ROOT_DIR

# Создаём конфигурацию
sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null <

Сравнение с альтернативами

Nginx — не единственное решение на рынке. Вот сравнение с основными конкурентами:

Веб-сервер Производительность Память Конфигурация Экосистема
Nginx Отлично Низкое потребление Средняя сложность Богатая
Apache Хорошо Высокое потребление Простая Очень богатая
Caddy Хорошо Среднее потребление Очень простая Развивающаяся
Traefik Хорошо Среднее потребление Автоматическая Контейнеры

Полезные модули и расширения

Nginx имеет богатую экосистему модулей. Вот наиболее полезные:

  • ModSecurity: Web Application Firewall
  • PageSpeed: Автоматическая оптимизация страниц
  • Brotli: Современный алгоритм сжатия
  • GeoIP: Геолокация по IP-адресам
  • Rate Limiting: Защита от DDoS атак

Установка дополнительных модулей:

sudo apt install nginx-module-geoip nginx-module-image-filter -y

Нестандартные способы использования

Nginx можно использовать не только как веб-сервер:

  • Mail proxy: Балансировка SMTP/IMAP серверов
  • TCP/UDP load balancer: Работа с любыми протоколами
  • API Gateway: Управление доступом к микросервисам
  • Content cache: Кеширование статического и динамического контента

Пример конфигурации для TCP балансировки:

stream {
    upstream database {
        server 192.168.1.100:5432;
        server 192.168.1.101:5432;
    }

    server {
        listen 5432;
        proxy_pass database;
    }
}

Безопасность и hardening

Дополнительные меры безопасности для production-серверов:

# Ограничение скорости запросов
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
    limit_req zone=one burst=5;
    
    # Скрытие версии Nginx
    server_tokens off;
    
    # Дополнительные заголовки безопасности
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    add_header Content-Security-Policy "default-src 'self'";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
}

Мониторинг производительности

Настройка мониторинга с помощью простых инструментов:

# Скрипт для мониторинга активных соединений
#!/bin/bash
while true; do
    echo "$(date): Active connections: $(netstat -an | grep :80 | wc -l)"
    sleep 60
done

Интеграция с системами мониторинга вроде Zabbix или Prometheus позволяет получать детальную аналитику по производительности.

Заключение и рекомендации

Nginx на Ubuntu 24 — это мощная и надёжная связка для любых веб-проектов. Правильная настройка с самого начала поможет избежать многих проблем в будущем и обеспечит стабильную работу ваших сервисов.

Основные рекомендации:

  • Для простых проектов: Используйте стандартную установку из репозитория Ubuntu
  • Для высоконагруженных систем: Обязательно оптимизируйте конфигурацию под ваше железо
  • Для критически важных сервисов: Настройте мониторинг и автоматическое резервное копирование конфигураций
  • Для development: Используйте Docker-контейнеры для быстрого развёртывания

Если планируете серьёзные нагрузки, стоит рассмотреть выделенные серверы — они дадут больше контроля над производительностью и безопасностью.

Помните, что веб-сервер — это только часть инфраструктуры. Правильная настройка всей цепочки от DNS до application сервера критически важна для получения максимальной производительности и надёжности.

Дополнительные ресурсы для изучения:


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked