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

Что такое Nginx

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

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

Вот некоторые из них:

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

Все эти преимущества делают Nginx мощным инструментом для обработки веб-трафика и обеспечения высокой производительности в различных сценариях.

Как выбрать сервер на Linux

Рекомендуемые системные требования для установки Nginx:

  • Процессор с двумя ядрами и тактовой частотой 2 ГГц
  • 4 ГБ оперативной памяти (ОЗУ)
  • 25 ГБ дискового пространства (меньше, если устанавливается минимальная версия)

Если вы ещё не определились с сервером, то мы предлагаем вам рассмотреть VPS/VDS сервер на Linux от RU-CENTER. Независимо от задач – стандартных или нестандартных, для разработки или высоконагруженных проектов – у нас есть подходящие тарифы с объёмом до 32 ГБ ОЗУ и 320 ГБ SSD.

С нашим VPS/VDS хостингом на Linux вы можете устанавливать любое программное обеспечение, переключаться на новые операционные системы всего в несколько кликов. 

Выберите надёжность и производительность с VPS/VDS хостингом от нашей компании.

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

Когда мы устанавливаем Nginx на Ubuntu, то следуем такой инструкции:

  1. Откройте терминал. 
  2. Введите следующую команду, чтобы обновить список доступных пакетов:

   sudo apt update

  1. Для установки Nginx необходимо применить:

   sudo apt install nginx

  1. После установки Nginx будет автоматически запущен. Чтобы убедиться, что он работает, пропишите команду:

   sudo systemctl status nginx

Вы увидите вывод, который покажет текущий статус Nginx. Если он успешно запущен, вы увидите надпись «active (running)».

  1. Откройте веб-браузер и введите IP-адрес вашего сервера или его доменное имя. Если установка прошла успешно, вы должны увидеть страницу приветствия Nginx.

Теперь Nginx установлен и запущен на вашем сервере Ubuntu. Вы можете начать настраивать его для размещения ваших веб-приложений и сайтов.

Команды для работы с Nginx

Когда вы начнёте работать с веб-сервером 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). Это очень важный шаг, который поможет вам обеспечить безопасность веб-сервера. 

  • Порт 22 (SSH) – это протокол удалённого доступа к серверу, который обеспечивает зашифрованное соединение и аутентификацию пользователя. Оставив открытым только порт 22, вы позволите себе подключаться к серверу с помощью SSH, что необходимо для администрирования и управления.
  • Порт 80 (HTTP) и 443 (HTTPS) используются для веб-сервера Nginx. Порт 80 обеспечивает обычное соединение HTTP, а порт 443 – это защищённое соединение HTTPS с использованием SSL/TLS-шифрования. Открыв эти порты, вы позволите вашему веб-серверу обслуживать HTTP- и HTTPS-запросы. Так, пользователи смогут просматривать страницы и обмениваться данными с вашим сервером.

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

Важно! Если в будущем возникнет необходимость в каких-то портах, вы сможете их открыть.

Такой подход минимизирует риски и обеспечивает более жёсткий контроль над тем, какие соединения могут достигать вашего сервера. Это особенно важно в условиях, когда сервер является важной частью инфраструктуры и хранит конфиденциальные данные.

Теперь перейдём к настройке брандмауэра.

Важно! Если у вас уже установлен UFW, сразу переходите к шагу 2. 

  1. Вам потребуется использовать утилиту UFW (Uncomplicated Firewall), которая предоставляет простой интерфейс для управления брандмауэром. Для этого введите:

   sudo apt update

   sudo apt install ufw

  1. После успешной установки добавьте веб-сервер в список доступных приложений брандмауэра:

sudo nano /etc/ufw/applications.d/nginx.ini

  1. Откроется файл «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

  1. Сохраните внесённые изменения и закройте редактор.
  2. Теперь проверьте список доступных приложений с помощью команды:

sudo ufw app list

Если на экране в списке «Available applications» отображается ваш веб-сервер, то вы на верном пути.

  1. Далее активируйте брандмауэр и разрешите передачу трафика через указанные порты:

sudo ufw enable

sudo ufw allow 'Nginx Full'

sudo ufw allow 'OpenSSH'

Теперь ваш веб-сервер имеет доступ через брандмауэр и будет обрабатывать трафик по портам 80 и 443, а также предоставлять SSH-подключение через порт 22.

  1. Вы можете проверить корректность настроек и их статус, применив:

   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

Основной конфигурационный файл Nginx на Ubuntu находится по пути «/etc/nginx/nginx.conf». Обычно большая часть базовой конфигурации уже настроена корректно. 

  1. Откройте конфигурационный файл с помощью редактора:

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-адресов на одном сервере. 

Чтобы активировать виртуальный хост, выполните следующие шаги:

  1. В директории «/etc/nginx/conf.d/» создайте файл конфигурации для вашего виртуального хоста. Например:

 sudo nano /etc/nginx/conf.d/mywebsite.conf

  1. Внутри файла определите виртуальный хост. Пример конфигурации для домена «website.ru»:

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»  – это ваше доменное имя.

  1. Далее протестируйте конфигурацию с помощью команды:

   sudo nginx -t

  1. Если вам всё верно, то перезапустите Nginx для применения изменений:

   sudo systemctl restart nginx

Теперь ваш виртуальный хост должен быть активирован. Он будет обрабатывать запросы, связанные с указанным доменом или IP-адресом, согласно вашей конфигурации.

Заключение

В этой статье мы рассмотрели, как установить и настроить веб-сервер Nginx на операционной системе Ubuntu. С помощью этой статьи вы получили основные знания для успешной установки и начальной настройки Nginx. Теперь вы что сможете развернуть стабильное и производительное окружение для веб-приложений и сайтов.

Всё ещё остались вопросы?