Nginx: настройка и установка

Nginx: настройка и установка Что собой представляет apache, nginx? С особенностями, настройками и вариантами настроек этого объекта должен быть знаком каждый веб-разработчик.

О Nginx
Данный инструмент имеет несколько рабочих и один главный процесс. Главный процесс занимается чтением и проверкой конфигурации. Также он контролирует управление рабочими процессами. Задача рабочих процессов состоит в том, чтобы обрабатывать поступающие запросы. В nginx используется модель, которая базируется на событиях. Также здесь используются механизмы, которые зависят от операционной системы. Это позволяет добиться эффективного распределения запросов между рабочими процессами. Число этих процессов обозначены в конфигурационном файле. Значение может устанавливаться автоматически или быть фиксированным. Настройка модулей и системы в Nginx осуществляется при помощи конфигурационного файла. Поэтому если пользователю нужно что-то изменить, то искать необходимо именно его. Обычно данный файл лежит в папке /etc/nginx и имеет расширение .conf.

Запуск, перезагрузка, логи
Настройка сервера nginx возможно только в том случае, если он запущен. Управление осуществляется благодаря вызову исполняемого файла, имеющего параметр –s. Для этого необходимо использовать следующую запись: nginx –s сигнал. В этом случае можно подставлять следующие команды:
— Stop: применяется для быстрого завершения работы.
— Reload: данная команда необходима для того, чтобы перезагрузить конфигурационный файл. Все дело в том, что пока файл работает, любые изменения не будут применены. Чтобы они вступили в силу, требуется перезагрузка. Как только этот сигнал будет получен, главный процесс приступит к проверке правильности синтаксической составляющей конфигурационного файла и попробует применять указания, которые там имеются. В случае неудачной попытки все изменения можно будет откатить, и работать со старыми параметрами. Если все операции были произведены успешно, то запустятся новые рабочие процессы. Старым процессам будет отправлено требование завершения.
— Quit: используется для плавного завершения работы. Может использоваться в тех случаях, когда необходимо подождать, когда закончат обслуживаться текущие запросы.
— Reopen. Используется для закрытия и открытия лог-файлов.

Применение утилит
Настройку процессов можно осуществлять при помощи средств Unix. В качестве примера мы рассмотрим утилиту kill. Обычно в таких утилитах используется механизм отправки процессу сигнала вместе с данными. Связываются эти компоненты при помощи ID. Данные хранятся в файле nginx.pid. Предположим, нас интересует процесс с номером 134. Чтобы плавно завершить его, необходимо отправить следующую команду: kill –s QUIT 1628 Предположим, вы хотите просмотреть список запущенных файлов. Для этого необходимо использовать утилиту ps. Используемая команда будет выглядеть следующим образом: ps –ax | grep nginx. Как вы сами можете убедиться, при использовании дополнительных инструментов необходимо указывать, что применяется именно он. Теперь сконцентрируемся на nginx настройке.

Конфигурационный файл: структура
При установке и настройки nging пользователю придется работать с модулями, которые настраиваются при помощи директив, указанных в конфигурационном файле. Директивы могут быть простыми и блочными. К директивам первого типа относятся имя и параметры, которые разделяются пробелами. Конец параметров указывается точкой с запятой. Блочная директива имеет схожее строение, однако в директивах данного типа вместо окончания используется набор дополнительных инструкций, размещаемых в фигурных скобках ({указания}). Если необходимо разместить в них имена и параметры других процессов, то такие конструкции уже называются контекстом. Можно привести в качестве примера http, location, server.

Раздача статического содержимого
Раздача статического содержимого является одной из важнейших задач, которая стоит перед конфигурацией nginx. Раздачей статического содержимого называют HTML-страницы и изображения. Предположим, необходимо осуществить разовую работу по настройке кластера nix nginx. Как выполнить данную операцию? Давайте рассмотрим на примере. Прежде чем приступать к решению данный задачи, давайте детализируем условия. Вне зависимости от запросов, файлы будут поступать из различных каталогов. Так, к примеру, в каталоге /data/www мы будем иметь документы HTML. В каталоге /data/images будут содержаться изображения. В данном случае оптимальная настройка nginx требует редактирования конфигурационного файла. В нем необходимо настроить внутри http блок server. Также для поддержки будет использоваться два location. Для начала нужно создать сами каталоги и разместить в них файлы, имеющие необходимые расширения. После этого необходимо открыть конфигурационный файл. По умолчанию в нем имеется несколько блоков server, которые в большинстве своем закомментированы. Чтобы достичь оптимального результата, необходимо проделать данный процесс по отношению ко всем составляющим по умолчанию. После этого необходимо добавить новый блок server при помощи такого кода http {server {}}. Конфигурационный файл поддерживает работу с несколькими такими блоками. Однако они должны иметь разные имена, а также отличаться портами, через которые осуществляется получение данных.

Реализация: location
Location определяется внутри Server. Конструкция будет выглядеть следующим образом server: location / { root/data/www}. Наличие значка / необходимо для того, чтобы сравнивать получаемые данные и проверять, если здесь такой адрес из обработанного запроса. Если проблема отсутствует, указываем путь к необходимому файлу, который находится в данной локальной системе. Если есть совпадение с несколькими блоками, то нужно выбрать тот, который имеет самый длинный префикс. Его длина в приведенном примере равняется единице. Это значит, что файл будет использоваться только в том случае, если у него нет конкурентов. Давайте немного усовершенствуем location/ images/ {root/data;}. Как вы сами можете определить, в данном случае мы ищем изображения. Теперь необходимо совместить все имеющиеся наработки. Конфигурация в данный момент времени будет выглядеть следующим образом: server { location/ {root/data/www;} location/images/ {root/data}}. Это всего лишь рабочий вариант, в котором используется стандартный порт №80. Такой сервер без проблем может быть доступен на локальном компьютере, если пройти по следующему адресу: http://locallhost. Как это все теперь будет работать?

Принцип функционирования
Итак, когда поступят запросы, которые начинаются на /images, файлы из соответствующего каталога будут отправляться сервером пользователю. При отсутствии такого каталога будет выдана ошибка с кодом 404. Если настройка nginx осуществляется на локальном компьютере, то при запросе http://locallhost/images/example.png будет получен файл, который имеет месторасположение /data/images/example.png. Поиск при указании одного символа «/» будет осуществляться в директории /data/www. Только теперь конфигурация была немного изменена. Чтобы она начала функционировать, необходимо ее перезагрузить. Для этого нужно использовать команду nginx – s reload. В том случае, если нормальная работа окажется невозможной, в файлах access.log и error.log, которые расположены в директиве /usr/local/ingnix/logs, вы сможете найти причину неисправности.

Прокси-сервер: создание
Относительно nginx можно сказать, что настройка данного объекта является одним из наиболее легких и частых применений. В данном случае используется принцип сервера, который принимает запрос, а затем осуществляет перенаправление к необходимым ресурсам. Затем ожидается ответ от ресурса, который направляет их к тому, кто ставил задачу. Давайте рассмотрим пример создания базовой точки, которая будет заниматься обслуживанием запросов пользователей и предоставлением изображений из локального каталога. Прежде всего, к блоку http необходимо добавить еще один server с содержимым: server {listen 8080; root/data/up1; location/{}}. Теперь расшифруем эту запись. Создается простой сервер, который будет прослушивать порт 8080. Если не указать listen, то сервер будет работать на 80-м. Будут отображаться все запросы в рамках локальной файловой системы, которые будут направлены в каталог /data/up1. Перед этим данный каталог еще необходимо создать. Чтобы иметь возможность проверки, необходимо пометить там файл index.html. Благодаря размещению в контексте server директивы root мы сможем использовать location при любых условиях. Теперь будем работать над созданием прокси-сервера. Чтобы работать с ним, необходима директива proxy_pass, для которой указываются протокол, имя и порт объекта. В результате получается следующее: server {location / {proxy_pass http://localhost:8080; } location/images/ {root/data;}}. При рассмотрении кода вы наверняка могли заметить, что второй блок location был изменен. В данном случае он сможет работать с типичными расширениями изображений. Можно было бы отобразить его немного по-другому: location~\(giflipglpng)${root/data/images}. Итоговая конфигурация будет выглядеть так: server{location/{proxy_pass http://localhost:8080/;} location~\.(giflipglpng)${root/data/images;}}. В результате прокси-сервер будет отфильтровывать запросы, в которых имеются указанные расширения и направлять их тем, кто запросит файлы.

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

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