Что такое nginx и как правильно его настроить

Если вы собираетесь развернуть собственный веб-сервер, вы наверняка задумывались, что такое Nginx. Ведь на нём работают более 30% всех сайтов. Его популярность объясняется возможностью бесплатного использования, открытым кодом.

Объясним простым языком, как использовать nginx для ваших целей.

Зачем нужен nginx

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

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

Когда человек открывает сайт, на сервер направляется специальный HTTP-запрос. Это набор данных, которые «объясняют», что хочет увидеть пользователь. Реакцией сервера становится HTTP-ответ, в котором содержится страница с необходимой информацией: изображениями, текстом, формами и другими элементами.

Как работает Nginx

У Nginx есть важная особенность. Он не формирует общий поток под запрос, как другие веб сервисы, а разбивает его на несколько мелких однотипных структур. Называются они рабочие соединения, любое из них способно одновременно обрабатывать до 1024 запросов.

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

Практическое применение у этого веб сервера довольно широкое, так как подключить nginx целесообразно в 3 случаях.

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

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

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

Применение Nginx и отличия от Apache

Nginx создавался как альтернатива известному Apache, который раньше использовался практически везде. И он обошёл свой «прототип» при работе со статичным контентом, так как работает быстрее, потребляя при этом значительно меньше серверных ресурсов. Однако, если на сайте преобладает динамический контент, Apache удобнее. Иногда оба сервера действуют вместе. Nginx обрабатывает статику, а динамические запросы отдаёт Apache.

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

  • Операционная система. На Linux, включая Ubuntu, Debian и другие версии, оба сервера отлично справляются со своими задачами. А вот на Windows у Nginx производительность ниже.
  • Ресурсы. Nginx требует меньше памяти при работе со статичном контентом.
  • Техподдержка. В случае с Nginx достучаться до техподдержки намного проще.
  • Охват. Хотя Nginx демонстрирует гибкие решения, но если сайтов несколько, лучшие показатели у Apache.

Архитектура и конфигурация Nginx

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

Простые включают в себя имя и параметры, разделяет их обычный пробел. Каждая строка заканчивается знаком «;» (точка с запятой).

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

Рассмотрим примеры, как настроить nginx, используя наиболее распространённых элементов.

  • worker_processes — число рабочих процессов.
  • worker_connections — максимальное число подключений рабочих процессов.
  • access_log & error_log —информация об ошибках.
  • gzip — Сжатие запросов с целью повышения производительности.
  • gzip_comp_level — уровень сжатия. Показательно может быть от 1 до 10, но чаще всего менее 7. gzip_types — список типов ответов при сжатии.
  • pid – файл с идентификатором главного процесса, который в данный момент действует.

Иногда можно встретить переменные с символом $ в начале. Это встроенные переменные. Они представляют собой поля заголовка запроса клиента.

В директории /usr/share/nginx/html по умолчания находится Root-каталог. Веб сервер автоматически обслуживание все файлы из него.

В /etc/nginx/conf.d через конфигурационные файлы формируются новые блоки. Если у них окончание .conf, они загрузятся, если запускается веб сервер.

Главный файл расположен в etc/nginx/nginx.conf. Именно здесь можно изменить все настройки.

Как установить nginx

Nginx настройка зависит от используемой операционной системы. Как правило, веб-сервер ставят на Linux, для которого существуют стандартные инструкции и комплект дистрибутивов. Также возможно разместить Nginx на FreeBSD или собрать уникальный функционал.

Так как запустить nginx на CentOS проще всего, рассмотрим именно этот вариант.

Сначала нужно добавить yum-репозиторий Nginx на ОС. Это делается с помощью этой команды.

sudo rpm - Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.e17.ngx.noarch.rpm

Непосредственно для установки нужно ввести команду «sudo yum install nginx». Появится окно с подтверждением, на которое необходимо согласиться.

Следующая команда запускает сервер.

sudo systemctl start nginx.service

Важно проверить, получилось ли установить веб сервер. Для этого нужно ввести дополнительную команду.

ip addr show eth0 | grep inet | awk '{print $2$ } ' |sed s/ \ /. *$//

Если хотите, чтобы Nginx запускался одновременно с ОС, введите следующую команду.

sudo servicectl enable nginx. service

Возможно установить docker nginx, в ПО с открытым кодом. Это актуально, когда приложение работает на вашем компьютере, но не включается на других устройствах.

Как проверить nginx

В случае администрирования сервера приложений или почтового сервера очень важно проверить, установлен ли Nginx. Это можно сделать с помощью одной простой команды.

Напишите в консоли SSH «nginx -v».

Если он стоит, система выдаст сообщение с номером. Выглядит оно приблизительно так.

nginx version: nginx/1.10.3

В другом случае смотрите предыдущий раздел с инструкцией по nginx «как включить».

Команды nginx

Базовые процессы тоже выполняются с помощью команд.

Как пример, может потребоваться остановка веб сервера. Чтобы быстро завершить все рабочие процессы, нужно ввести следующее.

$ sudo systemctl stop nginx
$ sudo service stop nginx

Это сработает, даже если присутствуют открытые соединения.

Рассказываем, как перезапустить nginx, поскольку это требуется довольно часто. Можно выбрать один из двух вариантов.

$ sudo systemctl restart nginx
$ sudo service restart nginx

Перезагрузка выполняется похожими командами.

$ sudo systemctl reload nginx
$ sudo service reload nginx

Кроме того, после внесения изменений желательно проводить тестирование. Для этого предусмотрена команда «sudo nginx -t».

Ошибки nginx

Существует несколько распространённых ошибок при настройке Nginx, но устранить их легко.

  • 502 Bad Gateway. Это значит, что не удаётся получить ответ ни от одно их сервисов. Обычно проблема заключается в том, что сервис банально не подключен. Поэтому его стоит проверить и перезапустить.
  • 504 Gateway Time-out. В этом случае веб сервер ответ получает, но ждёт его очень долго. Вам нужно увеличить время таймаута.
  • 413 Request Entity Too Large. Такое происходит при загрузке слишком больших файлов. По умолчанию в настройках стоит лимит на 1Mb, его нужно увеличить.

Заключение

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

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