Что такое nginx и как его убрать
Перейти к содержимому

Что такое nginx и как его убрать

  • автор:

Nginx: принципы работы и настройка

Коротко о Nginx

Nginx — это веб-сервер, прокси-сервер, обратный прокси-сервер, smtp-сервер и балансировщик нагрузки. Сразу раскроем все эти понятия. Магия перестает быть магией, когда понимаешь как устроен мир. Веб-сервер — это программа, которая принимает и обрабатывает запросы от клиентов по протоколам HTTP и HTTPS и возвращает им ответ в виде HTML-страницы. Прокси-сервер принимает и обрабатывает запросы клиентов, а затем передает их дальше, другим программам. Обратный прокси-сервер — принимает результат работы других серверов и отдаёт его клиентам. Smtp-сервер — это сервер почтовой службы. Балансировщик нагрузки — программа, которая распределяет сетевые запросы между серверами, следуя настройкам балансировки. NGINX сочетает в себе все перечисленные возможности, хотя изначально он задумывался только как web- и smtp-сервер. NGINX был разработан Игорем Сысоевым в 2004 году. Его не устраивала скорость работы Apache. Ему нужен был web-сервер, который мог бы держать 10,000 одновременных запросов, при этом расходовать минимум памяти, не теряя производительности. Сегодня с помощью NGINX решают следующие задачи:

  • Кеширование и стриминг видео
  • Отдача статического контента сайта
  • Построение CDN-сетей
  • Распределение нагрузки
  • Обеспечение безопасности
  • Работа почтовых служб
    и многое другое.

Секрет успеха NGINX в его архитектуре, которая коренным образом отличается от других веб-серверов. Давайте разберёмся, как работает NGINX?

Как работает NGINX?

Как работает NGINX?

Многие веб-серверы построены на простой многопоточной модели, NGINX использует событийную архитектуру, которая позволяет ему масштабироваться до сотен тысяч параллельных соединений. Ключевое — это то, что NGINX обрабатывает множество соединений в одном процессе.

У NGINX есть один мастер-процесс и несколько вспомогательных процессов. Например, на нашем 2 ядерном сервере, NGINX запустил 2 дополнительных процесса, обозначенных как worker process:

Работа NGINX

Мы не раз уже упомянули такие понятия как процесс и поток. Процесс или поток (с точки зрения ОС это одно и то же, разница лишь в разделении адресного пространства ) — это самодостаточный набор инструкций, который операционная система может запланировать для выполнения на ядре процессора.

На одном ядре одновременно может находиться только один процесс или поток. Процессы на ядре постоянно подменяют друг друга, из-за чего сильно страдает производительность, когда процессов становится много. Это камень преткновения для многих современных web-приложений, которые открывают на каждое соединение свой поток.

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

Графически схема работы NGINX выглядит следующим образом:

Схема работы процессов NGINX

Структурно её можно описать так: все потоки управляются одним рабочим процессом, процесс содержит меньшие блоки — соединения. Соединения доставляют запросы к рабочему процессу, который также отправляет его в главный процесс. Наконец, основной процесс предоставляет результат этих запросов.

Если хотите больше узнать о работе NGINX изнутри — на хабре есть отличная статья: «NGINX изнутри: рожден для производительности и масштабирования». Она, правда, старая, но очень хорошая. Рекомендуем!

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

Модули настраиваются через конфигурационные файлы NGINX, о них и поговорим.

Работа с конфигурационными файлами NGINX

Работа с конфигурационными файлами NGINX

NGINX работает с двумя уровнями конфигурационных файлов. Первый уровень — глобальный, к нему относится конфигурационный файл etc/nginx/nginx.conf. Второй уровень — локальный, к нему относятся конфигурационные файлы конкретных сайтов, расположенных, как правило, в /etc/nginx/site-available или в /etc/nginx/conf.d/

nginx.conf — это корневой конфигурационный файл NGINX. В нём содержатся его глобальные настройки:

  • пользователь, от чьего имени будет запускаться Nginx;
  • расположение pid-файла;
  • сколько рабочих процессов будет запущено;
  • ограничения на количество соединений;
  • условия сжатия контента
    и многое другое.

С nginx.conf NGINX начинает парсить конфигурационные файлы, которые состоят из директив. Директивы могут быть простыми — однострочными, а могут быть блочными. Если блочная директива содержит другую вложенную блочную директиву, то такая блочная директива называется контекстом.

Вот пример простой однострочной директивы: access_log /var/nginx/access.log main; Параметры директивы разделяются пробелами, а в конце строки обязательно ставится точка с запятой.

Пример простой блочной директивы может выглядеть так:

events worker_connections 1024;
>

Здесь контекст events содержит одну директиву — worker_connections, которая указывает на максимальное число одновременных соединений. Контекст может содержать вложенные контексты.

Вот пример стандартного контекста:

server location / root /data/www;
>

Здесь блочная директива server содержит несколько блочных директив location, организуя тем самым контекст server. Директивы вне любого контекста относятся к main.

Список основных контекстов и их значений:

  • main — корень конфигурации, по сути это /etc/nginx/nginx.conf;
  • events — контекст работы с соединениями;
  • http — контекст работы с http-протоколом;
  • server — контекст работы с сервером;
  • location — контекст работы с маршрутизацией запросов.

Контекст может быть указан не явно, а через директиву include c указанием директории расположения. Это делается для экономии места и возможности отдельного изменения параметров директив server. Вот пример, как это может быть исполнено:

user www www;
worker_processes 5;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 8192;

events worker_connections 4096;
>

http include conf/mime.types;
include /etc/nginx/sites-enabled/*;
index index.html index.htm index.php;

default_type application/octet-stream;
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
>

Здесь указаны сразу две директивы include: первая директива ссылается на мимотипы файлов для отдачи, а вторая на все конфигурационные файлы расположенные в директории /etc/nginx/sites-enabled/ . То есть, при чтении конфигурационного файла, include разворачивается в то, на что ссылается.

В нашем случае вместо include /etc/nginx/sites-enabled/* будут подставлены все конфигурационные файлы в директории /etc/nginx/sites-enabled/ , выглядящие следующим образом:

server listen 80;
server_name domain2.com www.domain2.com;

location / root /var/www/virtual/big.server.com/htdocs;
index index.html;
try file $uri $uri/index.html;
>
>

Благодаря такой древовидной модели сборки конфигурационных файлов удаётся достичь гибкости управления сайтами. Например, если на одном сервере располагаются несколько сайтов и один из них нужно отключить или изменить у него настройки — достаточно выполнить нужные работы и перечитать конфигурационный файл командой nginx -s reload .

Структуру конфигурационных файлов разобрали, осталось ответить ещё на один вопрос — как Nginx понимает, что нужно отдавать клиенту и по какому запросу?

Nginx анализирует HTTP-запрос от клиента и ищет совпадения со значениями условий директив server_name и linsten в контексте server. Когда совпадения найдены начинает работать контекст location, который отвечает за маршрутизацию запросов.

В обработке контекстов location Nginx тоже следует определённой иерархии обработки. Так совпадения с условиями обработки location будут искаться сначала среди префиксных location (location, не содержащий регулярных выражений), затем среди location с регулярными выражениями в порядке их следования в конфигурационном файле.

Если среди location с регулярными выражениями Nginx не найдёт совпадений, он вернёт первый префиксный location — корень сайта.

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

Расставляем всё по полочкам

Расставляем всё по полочкам

NGINX — это легковесный и мощный web-сервер, который способен держать до 10 тысяч одновременных соединений, расходуя при этом минимальное количество ресурсов. Чаще всего его используют в качестве прокси-сервера и обратного прокси-сервера.

NGINX обладает модульной архитектурой. Модули настраиваются через конфигурационные файлы, которые имеют древовидную структуру и собираются в единое целое при их чтении. Корневой конфигурационный файл NGINX — /etc/nginx/nginx.conf . Его NGINX читает в первую очередь, затем он читает другие конфиги, указанные в nginx.conf явным образом или с помощью директивы include.

Корневой конфиг содержит глобальные настройки NGINX: пользователь от чьего имени он будет запускаться, расположение pid-файла, количество рабочих процессов, ограничения на количество соединений и многое другое.

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

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

В следующей статье мы приведем такие кейсы использования NGINX:

  • Как разместить несколько сайтов на одном сервере?
  • Связка NGINX и Python — современный сайт на Django
  • Как защитить сайт от DDoS?
  • Балансировка нагрузки между бекенд-серверами.

Пока мы готовим новый материал, вы можете познакомиться поближе с NGINX. На сайте https://nginx.org/ru/ доступным языком подана официальная документация и есть хорошие примеры конфигурационных файлов. Также для более глубокого понимания следующей статьи пригодятся знания по Django, Linux и Docker. Их можно взять из наших статей:

Django-стек: работа, установка и настройка на одном сервере

Django-стек

Разберёмся как работает Django, что такое Application-сервер и как связать Nginx и Gunicorn.

Linux внутри Windows

Linux внутри Windows

Покажем как легко установить Linux внутрь Windows и научим работать в WSL2.

Введение в Docker

Введение в Docker

Расскажем, что такое Docker, из каких элементов он состоит и как работает.

что такое NGINX и как его найти?

Всем привет, я недавно в веб разработке (фронтенд) и никогда не понимал что такое NGINX, гугля и спрашивая у людей я слышу такой ответ: «Это веб-сервер который принимает и обрабатывает твои запросы» и ничего больше (в пример обычно приводится как-раз таки код веб-серверов на каком-либо языке). Но я не до конца улавливаю суть «Nginx» в понятии веб-сервер. К примеру у меня есть сервер на NodeJS, который обслуживает статические файлы и динамические роуты. Тоесть, у меня есть полностью рабочее, функционирующее приложение. Работа дальше написания веб-сервера (на каком-то конкретном языке) это для меня темный лес. Объясните пожалуйста что такое «Nginx», можно ли без него? (и без Apache, который упоминают так же часто как и Nginx). Что это такое?) Как мне пощупать Nginx, понять где или между чем он лежит (находится). Буду очень благодарен ясному объяснению

Отслеживать
user469485
задан 22 мар 2023 в 19:48
user469485 user469485
138 10 10 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Ваш NodeJS, который обслуживает статические файлы и динамические роуты, тоже является web-сервером т.к. обрабатывает запросы по http(s) протоколу.

Для улучшения производительности и защищенности вашего приложения правильнее перед NodeJs поставить другой вебсервер (например Nginx) поручить ему следующие ф-ции:

  1. SSL Termination. Т.е. за шифрование будет отвечать nginx, а далее проксировать запрос уже по http без шифрования
  2. Отдачу статики
  3. Кеширование

Отслеживать
ответ дан 23 мар 2023 в 8:58
Aleksey Vaganov Aleksey Vaganov
2,417 2 2 золотых знака 8 8 серебряных знаков 20 20 бронзовых знаков

  • nginx
  • apache
  • сервер
  • веб-сервер
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.5.3.8609

Как удалить Nginx в Ubuntu

Nginx — популярный веб-сервер, используемый для обслуживания динамических и статических веб-сайтов. Если вы решили удалить Nginx с вашего сервера Ubuntu, то в этом вам поможет несколько простых шагов.

Шаг 1: Остановите Nginx

Перед удалением Nginx необходимо остановить его работу на сервере. Для этого используйте следующую команду:

sudo systemctl stop nginx

Шаг 2: Удалите Nginx

Для удаления Nginx в Ubuntu используйте следующую команду:
sudo apt-get remove nginx

Эта команда удалит только пакет Nginx, но не удаляет его конфигурационные файлы и зависимости.

Шаг 3: Удалите конфигурационные файлы

Если вы хотите удалить конфигурационные файлы Nginx, используйте следующую команду:

sudo apt-get purge nginx
Так вы удалите не только пакет Nginx, но и все его конфигурационные файлы.

Шаг 4: Удалите зависимости

Если вы хотите удалить все зависимости, связанные с Nginx, используйте следующую команду:

sudo apt-get autoremove

Команда удалит все зависимости, которые больше не нужны на вашем сервере.

Шаг 5: Проверьте удаление

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

Если вам выдается сообщение о том, что Nginx не установлен, это значит, что он успешно удален.

Шаг 6: Очистите кэш и временные файлы

После удаления Nginx рекомендуется очистить кэш и временные файлы, чтобы освободить место на сервере. Для этого используйте следующую команду:

sudo apt-get clean

Очистит кэш и временные файлы, которые были созданы во время установки и удаления Nginx.

В заключение, удаление Nginx на сервере Ubuntu — это достаточно простая задача, если вы следуете вышеописанным шагам. Не забывайте остановить работу Nginx перед удалением и очистить кэш и временные файлы после его удаления.

Что такое Nginx

Что такое Nginx

Nginx — мощный инструмент для развертывания веб-сервера, который при правильной настройке превосходит Apache. Области применения Nginx весьма обширны — от кэширования HTTP до создания инвертированного прокси-сервера.

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

Что такое Nginx

В этой статье рассмотрим принцип работы Nginx, а также его функционал, отличия от Apache и способ установки на конкретную ОС.

Что такое Nginx

Nginx (NGINX, Engine-X, «Энжин-кс») — это бесплатный веб- и почтовый прокси-сервер с непоточной (асинхронной) архитектурой и открытым кодом.

Разработку Nginx начал в 2002 году Игорь Сысоев для Rambler. А в 2004 году он стал доступен широкому кругу пользователей . С 2011 года серверное ПО начала выпускать уже собственная фирма Игоря, которая спустя 2 года запустила расширенную платную версию продукта (Nginx Plus). Весной 2019 года Nginx была выкуплена крупным американским девелопером F5 Networks.

Что такое Nginx

Nginx работает на ОС Unix-типа и был успешно протестирован на OpenBSD, FreeBSD, Linux, Mac OS X, Solaris. На ОС Windows он стал доступен после выпуска бинарной сборки 0,7.52.

На данный момент функционалом пользуются такие известные платформы: Rambler, Begun, Yandex, SourceForge.net, WordPress.com, vkontakte.ru. Статистика показывает, что Nginx используют 22,3 млн веб-сайтов и 2,03 млн дополнительных активных сайтов.

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

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

Что такое Nginx - как работает

Практическое применение

  1. Отдельный порт/IP. При наличии большого количества статичного контента или файлов для загрузки, можно настроить на отдельном порту или IP-адресу, чтобы осуществлять раздачу. При большом количестве запросов рекомендуется ставить отдельный сервер и подключать к нему Nginx.
  2. Акселерированное проксирование. В таком случае все пользовательские запросы на статичный контент (картинки, простой HTML, JavaScript, CSS-файлы) поступают сначала на Nginx, а он их обрабатывает самостоятельно. При этом никаких изменений исходного кода не требуется.
  3. Nginx и FastCGI. Если поддерживается технология FastCGI, Apache вообще можно не использовать. Но в таком случае может потребоваться модификация кодов скриптов.

NGINX vs Apache

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

Что такое Nginx - nginx-vs-apache

Поскольку широкий функционал Nginx требует и значительно больших ресурсов системы, постоянно применять полноценную связку «Nginx + Apache» нецелесообразно. Чаще оба веб-сервера используются в симбиозе — Nginx отдает статику и перенаправляет обработку скриптов Apache.

Нужно, чтобы Nginx и Apache работали без сбоев? Мощный VPS от Eternalhost позволит сохранить оптимальную производительность, даже при пиковых нагрузках.

Сильные и слабые стороны

  • Оба серверы хорошо работают на системах типа Unix, но производительность Nginx на Windows заметно ниже.
  • При одновременной работе Nginx оказывается в два раза быстрее Apache и использует меньше памяти. С динамическим контентом скорость равна.
  • Для получения пользовательской поддержки можно обратиться на форум или почту компании, но у Apache Foundation есть с этим проблемы.
  • Apache хорошо справляется с хостингом нескольких сайтов сразу, но Nginx показывает лучшую «гибкость» и эффективность работы с динамическим контентом.

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

Установка на Linux возможна двумя способами — из предварительно собранного бинарного файла (пакета) или с помощью исходного кода.

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

Что такое Nginx - конфигурация

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

Установка из предварительно собранного файла

  1. Необходимо воспользоваться командой:
sudo apt-get updatesudo apt-get install nginx
sudo nginx -v

Для конфигурации Nginx задействуется директория /etc/nginx/. При дальнейшей работе с сервером важны файл nginx.conf и папка sites-available.

Основные настройки можно в файле nginx.conf. Благодаря этому файлу, все параметры можно настроить по своему усмотрению. Работать можно и с настройками по умолчанию.

Важные элементы конфигурации

  • worker_processes — количество рабочих процессов, которые будет использовать сервер. Число должно соответствовать количеству ядер процессора.
  • worker_connections — это максимальное количество подключений каждого рабочего процесса. Чем выше показатель, тем больше человек обслуживается одновременно.
  • access_log & error_log — эти файлы используется для регистрации любой ошибки и попыток получения доступа. Журналы изучаются для устранения неполадок и при аварийном завершении работы.
  • gzip — это настройки для «сжатия» запросов Nginx. Включение параметра позволит повысить производительность. По умолчанию поднастройки закомментированы.
  • gzip_comp_level — уровень сжатия от 1 до 10. Этот показатель обычно не превышает 6.
  • gzip_types — это перечень типов ответов, к которым применяется сжатие.

Сервер может обслуживать множество сайтов. Файлы, которые определяют какие именно, находятся в директории /etc/nginx/sites-available.

Чтобы Nginx работал с сайтами, их необходимо слинковать с /etc/nginx/sites-enabled.

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

Символьная ссылка — это путь к файлу. Общий синтаксис для неё выглядит так:

ln -s

Примеры ссылок для каталога и файла:

  • ln -s /usr/share/nginx/html/index.php /home/dmosk/ ;
  • ln -s /usr/share/nginx/html /home/dmosk/ .

Директория sites-available содержит конфигурацию виртуальных хостов. Это позволяет веб-серверу настраиваться для множества сайтов с разной конфигурацией. Сайты в этой директории не задействуются и будут обслуживаться только, если сделать символьную ссылку на папку sites-enabled.

Настройка конфигурации

Root-каталог Nginx по умолчанию находится в директории /usr/share/nginx/html. Все файлы, которые размещаются в нем, автоматически обслуживаются веб-сервером. Место определяется файлом конфигурации, который можно найти в /etc/nginx/conf.d/default.conf.

Новые блоки server создаются через конфигурационные файлы в /etc/nginx/conf.d. Они буду загружаться при запуске Nginx, если заканчиваются на .conf.

Основной конфигурационный файл сервера находится в /etc/nginx/nginx.conf. Через него изменяются любые настройки.

Запуск

После настройки конфигурации, можно Nginx запустить с помощью команды sudo service nginx start .

Любое изменение необходимо подтверждать перезагрузкой через service nginx reload . Проверка статуса осуществляется через команду service nginx status .

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

Рассмотрим практически установку Nginx на Linux, взяв за основу один из самых популярных дистрибутивов данной операционной системы – CentOS.

    Добавляем yum-репозиторий Nginx на ОС с помощью команды:

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo systemctl start nginx.service
ip addr show eth0 | grep inet | awk '< print $2; >' | sed 's/\/.*$//'
sudo servicectl enable nginx.service

Заключение

Что такое Nginx

Nginx представляет собой практически готовое решение для множества задач, требующих развёртывания полноценного веб-сервера или прокси. По ряду параметров Nginx превосходит своего «старшего коллегу» Apache. Главные из них — отсутствие требовательности к ресурсам и способность обрабатывать большое число соединений одновременно.

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

Чтобы Nginx, Apache и другой сложный «софт» работал, как швейцарские часы, разверните их на виртуальном сервере от Eternalhost! Это мощный и надёжный инструмент для самых неординарных задач в области IT.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *