Nginx для начинающих: установка, настройка и основные команды
Практически любой современный веб-сайт начинается с веб-сервера. Именно он принимает запросы пользователей, обрабатывает их и отдает страницы, изображения, файлы или API-ответы.
Одним из самых популярных веб-серверов сегодня является Nginx. Он используется миллионами сайтов по всему миру благодаря высокой производительности, низкому потреблению ресурсов и простоте настройки.
В этой статье разберем, что такое Nginx, как установить его на Ubuntu 24.04, создать первый виртуальный хост, настроить PHP и рассмотрим самые полезные команды для повседневной работы.
Что такое Nginx
Nginx (произносится как «Энджин-Икс») — это высокопроизводительный веб-сервер и обратный прокси-сервер (Reverse Proxy).
Основные задачи Nginx:
обслуживание веб-сайтов;
работа с HTTPS;
балансировка нагрузки;
обратное проксирование;
кэширование;
раздача статических файлов;
обработка PHP через PHP-FPM;
работа в качестве API Gateway.
Сегодня Nginx используется как небольшими личными сайтами, так и крупнейшими интернет-проектами.
Почему выбирают Nginx
Главные преимущества:
высокая скорость обработки запросов;
низкое потребление оперативной памяти;
отличная работа с большим количеством соединений;
встроенная поддержка Reverse Proxy;
простая конфигурация;
бесплатная лицензия;
большое сообщество.
Именно поэтому Nginx часто используется вместе с Laravel, WordPress, Bitrix, Docker и другими современными технологиями.
Установка Nginx на Ubuntu 24.04
Сначала обновите систему:
sudo apt update
sudo apt upgrade -y
Установите Nginx:
sudo apt install nginx -y
Проверьте установленную версию:
nginx -v
Например:
nginx version: nginx/1.24.0
Проверка работы
После установки служба обычно запускается автоматически.
Проверьте статус:
sudo systemctl status nginx
Если всё успешно, откройте в браузере IP-адрес вашего сервера.
Вы увидите стандартную страницу приветствия Nginx.
Открытие портов
Если используется UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Проверить:
sudo ufw status
Структура каталогов Nginx
Основные директории:
/etc/nginx/
Основные файлы:
/etc/nginx/nginx.conf
Конфигурации сайтов:
/etc/nginx/sites-available/
Активные сайты:
/etc/nginx/sites-enabled/
Логи:
/var/log/nginx/
Стандартный каталог сайта:
/var/www/html/
Создание первого сайта
Создадим каталог проекта:
sudo mkdir -p /var/www/example.com/public
Создадим тестовую страницу:
echo "<h1>My first Nginx site</h1>" | sudo tee /var/www/example.com/public/index.html
Создание Virtual Host
Создаем конфигурацию:
sudo nano /etc/nginx/sites-available/example.com
Добавьте:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
Сохраняем файл.
Активация сайта
Создаем символическую ссылку:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Проверяем конфигурацию:
sudo nginx -t
Если ошибок нет:
syntax is ok
test is successful
Перезапускаем сервер:
sudo systemctl reload nginx
Подключение PHP
Для Laravel и большинства PHP-проектов используется PHP-FPM.
Установим PHP:
sudo apt install php8.4-fpm
Добавим обработку PHP:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
После изменения конфигурации:
sudo nginx -t
sudo systemctl reload nginx
Основные команды Nginx
Проверить конфигурацию
sudo nginx -t
Это первая команда, которую следует выполнять после любых изменений.
Запустить сервер
sudo systemctl start nginx
Остановить сервер
sudo systemctl stop nginx
Перезапустить
sudo systemctl restart nginx
Перечитать конфигурацию
sudo systemctl reload nginx
В отличие от restart, пользователи практически не заметят перезагрузку.
Проверить статус
sudo systemctl status nginx
Включить автозапуск
sudo systemctl enable nginx
Отключить автозапуск
sudo systemctl disable nginx
Просмотр логов
Журнал запросов:
tail -f /var/log/nginx/access.log
Ошибки:
tail -f /var/log/nginx/error.log
Через systemd:
journalctl -u nginx -f
Reverse Proxy
Одно из самых популярных применений Nginx — проксирование запросов.
Например:
server {
listen 80;
server_name api.example.com;
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;
}
}
Так обычно публикуют приложения на Node.js, Go, Python, Docker и панели управления VPN.
Получение SSL-сертификата
Самый простой способ — использовать Let's Encrypt.
Установите Certbot:
sudo apt install certbot python3-certbot-nginx
Получите сертификат:
sudo certbot --nginx
Certbot автоматически:
выпустит сертификат;
настроит HTTPS;
добавит автоматическое продление.
Частые ошибки
Ошибка синтаксиса
Проверьте конфигурацию:
sudo nginx -t
Порт 80 уже занят
Посмотреть процесс:
sudo ss -tulpn | grep :80
Ошибка 502 Bad Gateway
Обычно означает:
не запущен PHP-FPM;
неверно указан сокет;
приложение недоступно.
Проверьте:
sudo systemctl status php8.4-fpm
Ошибка 403 Forbidden
Проверьте:
права на каталог;
директиву
root;владельца файлов;
наличие файла
index.phpилиindex.html.
Ошибка 404
Чаще всего причина:
неправильный путь
root;отсутствует файл;
ошибка в директиве
try_files.
Полезные советы
Чтобы сервер работал стабильно:
всегда проверяйте конфигурацию командой
nginx -t;используйте
reload, а неrestart, если меняли только настройки;регулярно просматривайте журналы ошибок;
храните конфигурации сайтов в системе контроля версий;
не редактируйте
nginx.confбез необходимости — создавайте отдельные файлы виртуальных хостов.
Заключение
Nginx — это мощный, быстрый и надежный веб-сервер, который подходит как для небольших сайтов, так и для высоконагруженных проектов. Он отлично интегрируется с PHP, Laravel, Docker, Node.js и другими современными технологиями.
Освоив базовые команды, настройку виртуальных хостов и работу с логами, вы сможете уверенно администрировать собственные сайты и серверы. В дальнейшем стоит изучить более продвинутые возможности Nginx: балансировку нагрузки, кэширование, HTTP/3, WebSocket, настройку Reverse Proxy и оптимизацию производительности.