Установка и Начальная Настройка Веб-Сервера Nginx на CentOS/RHEL

Опубликовано: 03.02.2018


Nginx— это веб-сервер и прокси-сервер с открытым исходным кодом для HTTP, SMTP, POP3 и IMAP протоколов, с основным акцентом на высокое распараллеливание, производительность и низкое потребление оперативной памяти.

В этом руководстве объясняется процесс установки и начальной конфигурации веб-сервера Nginx на операционных системах CentOS/RHEL.

Добавляем репозиторий Nginx

Если Вы хотите установить последнюю версию nginx со всеми функционалом и исправлениями, то Вам рекомендуется использовать непосредственно официальный репозиторий nginx для yum.

В стандартных репозиториях очень часто хранятся довольно устаревшие пакеты.

Для того, чтобы добавить репозиторий nginx в yum, создайте файл /etc/yum.repos.d/nginx.repo и скопируйте в него одну из следующих конфигураций.

Для CentOS:

[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1

Для RHEL:

[nginx] name=nginx repo baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

Вручную поменяйте $releasever на « 5» (для 5.x) либо на « 6» (для 6.x), в зависимости от версии Вашей операционной системы.

Установка Nginx

Установите веб-сервер nginx с помощью yum:

# yum install nginx

Добавьте nginx в автозагрузку:

# chkconfig nginx on

Базовая настройка Nginx

Сделайте резервную копию конфигурационных файлов:

# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back # cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.back

Откройте файл конфигурации nginx /etc/nginx/nginx.conf и измените значение параметра worker_processes. Оно должно равняться количеству процессоров на Вашем сервере.

worker_processes 1;

Чтобы узнать количество процессоров выполните следующую команду:

# lscpu | grep '^CPU(s)'

Разрешите сжатие, раскомментировав следующую строку :

# gzip on;

Сохраните и закройте файл.

Отредактируйте файл /etc/nginx/conf.d/default.conf. Измените имя сервера:

server_name example.com;

Сохраните и закройте файл. Запустите ngnix:

# service nginx start

Nginx + Apache


Связка двух веб-серверов, один из которых выполняет функцию фронтенда (Nginx), другой - бэкенда (Apache2), предназначена для снижения общей нагрузки на сервер. Достигается это за счет того, что более легкий и не обремененный дополнительным функционалом Nginx первым принимает все запросы пользователей. Он самостоятельно выдает по запросам статический контент (изображения, html-файлы, javascript-скрипты..), не озадачивая этой функцией тяжеловесный Apache, который, в свою очередь, обрабатывает динамический контент. Apache не работает напрямую с пользователем, все их запросы проксируются Nginx, и ему же возвращаются ответы. Так достигается разделение труда: Nginx освобождает Apache от необходимости “общаться” с множеством пользователей и обрабатывать запросы на статику, которая составляет большую часть исходящего трафика. Apache не создает множества дочерних процессов, потребляющих оперативную память.

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

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

Данная статья была протестирована на CentOS 5 и Debian Squeeze. Связка работает в том же виде и на других дистрибутивах, но по причине наибольшей популярности первых, мы будем говорить именно о них. Основная часть данной статьи посвящена CentOS, но различия с Debian заключаются только в названиях пакетных менеджеров и нескольких незначительных моментах. Все особенности установки для Debian описаны в заключительной части данной статьи. Команды и примеры файлов конфигурации, не указанные в этом разделе, подходят для обеих систем.



Настройка nginx в Качестве Front-end к Apache


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

Для выполнения поставленной задачи было проведено тестирование модели front-end/back-end системы, при которой в качестве front-end выступает легкий веб-сервер nginx, а в качестве back-end выступал все тот же Apache.

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

В случае схемы с применением front-end/back-end сервера получим значительную экономию системных ресурсов за счет того, что после того, как пришел запрос клиента, nginx передает запрос Apache и быстро получает ответ. В итоге, Apache, после того как отдал ответ nginx, освобождает память. Далее с клиентом взаимодействует веб-сервер nginx, который как раз и написан для раздачи статического контента большому количеству клиентов при незначительном потреблении системных ресурсов.

Установка nginx

Red Hat Enterprise Linux 4 / CentOS 4

Для установки nginx в этих операционных системах вам необходимо подключить дополнительный репозиторий пакетов и установить nginx:

yum install nginx

Red Hat Enterprise Linux 5 / CentOS 5

Для установки nginx в этих операционных системах вам необходимо подключить дополнительный репозиторий пакетов EPEL и установить nginx:

yum install nginx

ASPLinux Server 5

nginx присутствует в стандартной поставке дистрибутива, поэтому для установки просто выполните:

yum install nginx

Fedora

nginx присутствует в стандартном репозитории дистрибутива, поэтому для установки просто выполните:

yum install nginx