- Home »

Как установить 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 сервера критически важна для получения максимальной производительности и надёжности.
Дополнительные ресурсы для изучения:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.