Nginx – это популярный веб- и прокси-сервер, который также может выполнять роль обратного прокси, балансировщика нагрузки, а также обеспечивать функции кэширования. Он был создан для обработки большого количества одновременных соединений с минимальным использованием системных ресурсов.
Nginx обладает рядом значительных преимуществ, которые сделали его популярным выбором многих специалистов.
Вот некоторые из них:
Все эти преимущества делают Nginx мощным инструментом для обработки веб-трафика и обеспечения высокой производительности в различных сценариях.
Рекомендуемые системные требования для установки Nginx:
Если вы ещё не определились с сервером, то мы предлагаем вам рассмотреть VPS/VDS сервер на Linux от RU-CENTER. Независимо от задач – стандартных или нестандартных, для разработки или высоконагруженных проектов – у нас есть подходящие тарифы с объёмом до 32 ГБ ОЗУ и 320 ГБ SSD.
С нашим VPS/VDS хостингом на Linux вы можете устанавливать любое программное обеспечение, переключаться на новые операционные системы всего в несколько кликов.
Выберите надёжность и производительность с VPS/VDS хостингом от нашей компании.
Когда мы устанавливаем Nginx на Ubuntu, то следуем такой инструкции:
sudo apt update
sudo apt install nginx
sudo systemctl status nginx
Вы увидите вывод, который покажет текущий статус Nginx. Если он успешно запущен, вы увидите надпись «active (running)».
Теперь Nginx установлен и запущен на вашем сервере Ubuntu. Вы можете начать настраивать его для размещения ваших веб-приложений и сайтов.
Когда вы начнёте работать с веб-сервером Nginx, то почувствуете необходимость в некоторых командах для управления им, проверки его статуса, настройки автозапуска и анализа журналов.
Ниже представлены несколько базовых команд, которые помогут вам легко управлять Nginx.
Функция |
Команда |
Запуск |
sudo systemctl start nginx |
Остановка |
sudo systemctl stop nginx |
Перезапуск |
sudo systemctl restart nginx |
Перезапуск с перечитыванием конфигурации (без остановки) |
sudo systemctl reload nginx |
Проверка статуса |
sudo systemctl status nginx |
Настройка автозапуска |
sudo systemctl enable nginx |
Отключение автозапуска |
sudo systemctl disable nginx |
Просмотр журнала ошибок |
sudo tail -f /var/log/nginx/error.log |
Тестирование конфигурации |
sudo nginx -t |
Просмотр версии |
nginx -v |
Принудительное завершение работы |
sudo nginx -s quit |
Эти команды помогут вам легко управлять Nginx и эффективно настраивать свой веб-сервер.
Настройку брандмауэра для Nginx мы будем проводить, чтобы закрыть все порты, кроме необходимых – 22 (SSH), 80 (HTTP) и 443 (HTTPS). Это очень важный шаг, который поможет вам обеспечить безопасность веб-сервера.
Закрытие всех остальных портов является важной мерой безопасности, так как оно ограничивает потенциальные уязвимости и предотвращает возможные атаки на сервер.
Важно! Если в будущем возникнет необходимость в каких-то портах, вы сможете их открыть.
Такой подход минимизирует риски и обеспечивает более жёсткий контроль над тем, какие соединения могут достигать вашего сервера. Это особенно важно в условиях, когда сервер является важной частью инфраструктуры и хранит конфиденциальные данные.
Теперь перейдём к настройке брандмауэра.
Важно! Если у вас уже установлен UFW, сразу переходите к шагу 2.
sudo apt update
sudo apt install ufw
sudo nano /etc/ufw/applications.d/nginx.ini
[Nginx HTTP]
title=Web Server
description=Enable NGINX HTTP traffic
ports=80/tcp
[Nginx HTTPS] \
title=Web Server (HTTPS) \
description=Enable NGINX HTTPS traffic
ports=443/tcp
[Nginx Full]
title=Web Server (HTTP,HTTPS)
description=Enable NGINX HTTP and HTTPS traffic
ports=80,443/tcp
sudo ufw app list
Если на экране в списке «Available applications» отображается ваш веб-сервер, то вы на верном пути.
sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
Теперь ваш веб-сервер имеет доступ через брандмауэр и будет обрабатывать трафик по портам 80 и 443, а также предоставлять SSH-подключение через порт 22.
sudo ufw status
Появится примерно следующий вывод:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
Nginx HTTPS ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Nginx HTTPS (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Важно! Как мы уже писали, использование брандмауэра – это важная часть обеспечения безопасности сервера. Пожалуйста, будьте осторожны при изменении настроек брандмауэра, чтобы случайно не заблокировать важные сервисы и приложения.
Основной конфигурационный файл Nginx на Ubuntu находится по пути «/etc/nginx/nginx.conf». Обычно большая часть базовой конфигурации уже настроена корректно.
sudo nano /etc/nginx/nginx.conf
Каждый отдельный раздел представляет собой директиву, которая управляет определёнными настройками веб-сервера. Директивы могут быть простыми или блочными. Блочные директивы, помимо имени и параметров, содержат дополнительные инструкции, расположенные внутри фигурных скобок.
Вот некоторые из директив, которые присутствуют в основном конфигурационном файле:
Директива |
Функция |
user |
Указывает пользователя, от имени которого выполняются все операции сервера. |
worker_processes |
Предоставляет количество рабочих процессов сервера. Оно должно быть равно или меньше числу доступных ядер процессора. С параметром «auto» количество определится автоматически. |
pid |
Файл, в котором хранится идентификатор главного процесса сервера. |
include |
Позволяет вам включать другие конфигурационные файлы в основной файл по заданной маске. |
events |
Раздел, который содержит директивы, влияющие на работу сетевых соединений. |
worker_connections |
Показывает максимальное количество одновременных соединений, которые может обслуживать один рабочий процесс. |
multi_accept |
Параметр, который определяет, принимает ли рабочий процесс все новые соединения сразу или только по одному. |
use |
Указывает метод обработки соединений. По умолчанию, сервер выбирает наиболее подходящий и эффективный метод. |
http |
Раздел, содержащий директивы, отвечающие за работу HTTP-сервера. |
sendfile |
Включает или отключает метод отправки данных с использованием sendfile. Она оптимизирует передачу статических файлов через файловую систему, что обычно полезно для высокоэффективных серверов. |
tcp_nopush |
Заставляет сервер отправлять заголовки HTTP-ответов одним пакетом, что улучшает производительность при передаче множества маленьких файлов. |
tcp_nodelay |
Позволяет отправлять данные без буферизации их в целях уменьшения задержки. |
keepalive_timeout |
Определяет время ожидания для keep-alive соединения перед его разрывом сервером. Keep-alive соединения позволяют клиентам повторно использовать одно и то же соединение для нескольких запросов, что уменьшает накладные расходы на установку соединения. |
keepalive_requests |
Устанавливает максимальное количество запросов, которое может быть обработано через одно keep-alive соединение. Она позволяет контролировать повторное использование соединения для запросов. |
error_log |
Определяет файл, в который будут записываться логи ошибок веб-сервера. |
gzip |
Отвечает за сжатие контента перед отправкой клиентам. Когда браузер запросит данные, сервер сможет сжать их и передать в браузер в сжатом виде, что уменьшает использование пропускной способности и ускоряет загрузку страниц. |
Все эти команды позволят вам контролировать различные аспекты работы Nginx, включая обработку соединений, производительность, настройку HTTP-сервера и сжатие контента.
Важно! Если вы хотите внести особые настройки, можно создать свои файлы конфигурации в директории «/etc/nginx/conf.d/».
Виртуальные хосты (серверные блоки) позволяют вам настроить Nginx для обработки нескольких доменных имён или IP-адресов на одном сервере.
Чтобы активировать виртуальный хост, выполните следующие шаги:
sudo nano /etc/nginx/conf.d/mywebsite.conf
nginx
server {
listen 80;
server_name website.ru www.website.ru;
root /var/www/mywebsite;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Где «website.ru» – это ваше доменное имя.
sudo nginx -t
sudo systemctl restart nginx
Теперь ваш виртуальный хост должен быть активирован. Он будет обрабатывать запросы, связанные с указанным доменом или IP-адресом, согласно вашей конфигурации.
В этой статье мы рассмотрели, как установить и настроить веб-сервер Nginx на операционной системе Ubuntu. С помощью этой статьи вы получили основные знания для успешной установки и начальной настройки Nginx. Теперь вы что сможете развернуть стабильное и производительное окружение для веб-приложений и сайтов.