🐹 CentOS 7: Репозиторий, установка и запуск nginx.

Содержание:

1. Введение.
2. Как работает Nginx?
3. Nginx vs Apache.
4. Репозиторий, установка и запуск nginx.
5. Модификация заглушки nginx.
6. Оригиналы источников информации.


1. Введение.

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

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

Он был выпущен в 2004 году под открытой лицензией BSD. Изначально приложение создавалось для решения проблемы масштабирования, известной как «10 тысяч соединений» (С10к). Это значит, что до Nginx web-сервер не был способен одновременно обрабатывать пользовательские запросы более чем с 10 000 подключений.

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

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

Nginx отлично подходит для web-проектов с высокой посещаемостью. Однако web-сервер не может самостоятельно работать с динамическим контентом. Поэтому его чаще используют для статических web-сайтов или например, в связке с PHP-FPM или Apache HTTP Server как прокси-сервер.

Ссылка: «CentOS 7: Установка PHP 7.4 и настройка php-fpm.sock — Fastcgi Process Manager для Nginx».

Ссылка: «Nginx: Проксирование запросов с помощью proxy_pass».

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

2. Как работает Nginx?

Nginx — это разработанный Игорем Сысоевым http-proxy-сервер. Разработчик сам чаще называет его proxy-сервером, чем web-сервером. Это и есть его основное отличие от Apache, обычно к Nginx приходят те, кто испытывает проблемы с Apache. Благодаря тому, что Nginx сам не выполняет никакой тяжелой работы, Игорь смог заложить в него прекрасную асинхронную событийную архитектуру.

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

Один рабочий процесс Nginx обрабатывает не один запрос пользователя, как Apache, а тысячи этих запросов. Ввиду того, что Nginx — это proxy-сервер, для него не составляет никакого труда получить запрос пользователя, отправить его на backend, например php-fpm, а пока backend занят трудом — обрабатывать остальные запросы пользователей, когда FPM ответит Nginx‘у о том что тот самый первый запрос обработан и отдаст ответ, Nginx передаст ответ назад пользователю.

В качестве интерператора PHP мы берется пакет PHP-FPM. Он специально разработан как прослойка между интерпретатором PHP и программным обеспечением, которое хочет работать с интерпретатором через FastCGI.

В то же время FPM это не просто прослойка, а полноценный менеджер процессов, который следит за выполнение процессов, ограничениями, утечками памяти и так далее.

Внешне для нас это выглядит так: мы отправили код на php, а в ответ получаем текст-результат выполнения кода. Просто и прозрачно.

Например, пользователь ввел в Chrome адрес auto.ru, его запрос поймал Nginx от auto.ru и передал его в php-fpm , а дальше PHP-fpm запустил PHP, который подключился к базе данных выбрал все картинки и информацию о машинах, php-fpm отгрузил его в Nginx, а Nginx отправил пользовательскому Chrome.

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

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

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

3. Nginx vs Apache.

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

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

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

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

4. Репозиторий, установка и запуск nginx.

Для установки самой свежей стабильной версии nginx на CentOS 7 подключим оригинальный официальный репозиторий. Лучше использовать оригинальный официальный репозиторий nginx по следующей причине — удобное начальное расположение и формат конфигурационных файлов. Устанавливая софт из официальных репозиториев можно быть уверенным, что имеешь самую свежую и актуальную версию nginx, так и расположение и формат конфигурационных файлов будет одинаковый во всех системах.

Банальный пример. Если ставить nginx из официального репозитория CentOS 8, настройка виртуального хоста по умолчанию будет прямо в основном файле конфигурации nginx.conf. Это не удобно, так как в этом файле хранится набор настроек без привязки к виртуальным хостам. Если установить nginx из официального репозитория, конфигурация хоста по умолчанию будет в отдельном конфигурационном файле default.conf.

Подключаем репозиторий nginx в CentOS 7. Лучшее использовать mainline версию. Она имеет все нововведения на борту и достаточно стабильна. Если вы хотите стабильную версию, то используйте репозиторий stable.

Создадим конфигурационный файл репозитория /etc/yum.repos.d/nginx.repo.

# mcedit /etc/yum.repos.d/nginx.repo

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Теперь устанавливаем nginx на сервер.

# yum -y install nginx

Запускаем nginx и добавляем в автозагрузку.

# systemctl start nginx
# systemctl enable nginx

Проверим старт nginx в системе:

# systemctl status nginx

Проверяем, запустился ли web-сервер.

Для этого идем по ссылке:

# http://ваш-IP-адрес/.

Вы должны увидеть стандартную страницу заглушку:

Вы должны увидеть стандартную страницу заглушку, если страница не открывается, то скорее всего вы не настроили брандмауэр на порт 80.

Для работы web-сервера требуется пробросить порт 80/tcp, порт 443/tcp порт через брандмауэр.

Ссылка: «CentOS 7: Первичная настройка брандмауэра web-сервера. Проброс 80 порта и 443 порта. Настройка firewalld или iptables.»

5. Модификация заглушки nginx.

Примечание! Если вам не нравится данная стандартная скучная картинка, то ее всегда можно разнообразить красивой заглушкой на HTML5.

Ссылка: «Nginx: Модификация базовой страницы приветствия. Заглушка на HTML5».

6. Оригиналы источников информации.

  1. serveradmin.ru «Настройка web сервера nginx, php-fpm, php7 на CentOS 8» от 28.02.2020.
  2. eternalhost.net «Что такое Apache».
  3. eternalhost.net «Что такое Nginx».
  4. yodo.im «Yodo. Бот учитель Linux и DevOPS».

Читайте также: