Учебное пособие по NGINX: основные команды и настройки

Учебное пособие по NGINX Изучение

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

Центральный блок управления: nginx.conf

В отличие, например, от Apache, NGINX работает на основе событий. Отдельные запросы классифицируются не как новый рабочий процесс, для которого должны быть загружены все модули, а как событие. Эти события разбиваются на существующие рабочие процессы, которые обслуживаются родительским основным процессом. Сколько в итоге рабочих процессов и как распределяются запросы к серверу (т.е. события) определяется в конфигурационном файле nginx.conf. По умолчанию их можно найти в каталогах /usr/local/nginx/conf, /etc/nginx или /usr/local/etc/nginx.

Управляйте процессами и внедряйте новые конфигурации

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

sudo service nginx start

Если программное обеспечение веб-сервера работает, управляйте им, обращаясь к процессам (в первую очередь к основному процессу) с параметром -s и определенным сигналом. Синтаксис соответствующих команд относительно не впечатляющий:

sudo nginx -s signal

Для «сигнала» у вас есть следующие четыре варианта, среди прочего:

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

Опция перезагрузки, которая перезагружает файл конфигурации, является хорошим способом применить к нему изменения без необходимости выходить и перезапускать программное обеспечение веб-сервера. В любом случае вам предстоит определиться с вариантом — полный перезапуск сервера или простая перезагрузка NGINX — чтобы изменения вступили в силу. Если вы выбрали последнюю, более элегантную версию и выполнили приведенную ниже команду, основной процесс получит указание применить изменения в файле nginx.conf :

sudo nginx -s reload

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

Читайте также:  Полное руководство для начинающих по основам языка Go

Кстати, вы также можете нацеливаться на процессы NGINX с помощью таких инструментов, как kill. Все, что вам нужно, — это соответствующий идентификатор процесса, который вы можете найти в файле nginx.pid в каталоге /usr/local/nginx/logs или, альтернативно, в каталоге /var/run. Например, если основной процесс имеет идентификатор 1628, его можно завершить в щадящем режиме с помощью kill и сигнала выхода:

sudo kill -s quit 1628

Вы также можете использовать утилиту ps для просмотра списка всех запущенных процессов NGINX:

sudo ps -ax | grep nginx

Как регулировать доставку статического контента

Весьма вероятно, что вы используете свой веб-сервер для доставки файлов, таких как изображения, видео или статический HTML-контент. Из соображений эффективности рекомендуется выбирать разные локальные каталоги для разных типов контента. Начните с создания каталога примера /data/html, поместите туда образец HTML-документа index.html и создайте папку /data/images с несколькими образцами изображений.

На следующем шаге необходимо ввести два каталога в файл конфигурации, указав оба в директиве блока сервера, которая, в свою очередь, является поддирективой директивы блока http. По умолчанию здесь уже записаны различные инструкции, которые вы изначально можете отключить (выключить). Затем просто создайте отдельный оператор блока сервера:

http {
  server {
  }
}

Два каталога, в которых находятся изображения и HTML-документы, теперь должны быть указаны в этом блоке сервера. Соответствующий результат выглядит так:

server {
  location / {
    root /data/html;
  }

  location /bilder/ {
    root /data;
  }
}

Эта конфигурация является настройкой по умолчанию для сервера, прослушивающего порт 80 и доступного через localhost. Все запросы, URI которых начинаются с /images/, теперь будут запрашивать файлы из каталога /data/images. Если соответствующий файл там не существует, появится сообщение об ошибке. Все события NGINX, URI которых не начинаются с /images/, перенаправляются в каталог /data/html.

Не забудьте после этого перезагрузить или перезапустить NGINX, чтобы изменения вступили в силу.

Настройка простого прокси-сервера NGINX

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

Читайте также:  Погружаемся в функцию setInterval с практическими примерами и основными принципами её применения

На первом этапе вы определяете основной сервер в nginx.conf :

server {
  listen 8080;
  root /data/up1;

  location / {
  }
}

В отличие от предыдущего примера, здесь вы используете директиву listen, так как порт 8080 будет использоваться для входящих запросов вместо стандартного порта. Также создайте целевой каталог /data/up1 и поместите туда страницу index.html.

Во-вторых, прокси-сервер и его функция доставки содержимого изображения определяются с помощью директивы proxy-pass, включая сведения об основном сервере — протоколе ( http ), имени ( localhost ) и порте ( 8080 ):

server {
  location / {
    proxy_pass http://localhost:8080;
  }

  location ~ \.(gif|jpg|png) $ {
    root /data/bilder;
  }
}

Второй блок местоположения указывает прокси-серверу отвечать на все запросы, URI которых заканчиваются характерными для изображений суффиксами.gif,.jpg и.png, извлекая соответствующий контент из локального каталога /data/images. Все остальные запросы перенаправляются на главный сервер. Как и в случае с настройками ранее, сохраните свой прокси изображения с сигналом перезагрузки в основной процесс или с перезапуском NGINX. Дополнительные возможные директивы для более сложных настроек прокси см. в официальном онлайн-руководстве по NGINX.

Оцените статью
Блог о программировании
Добавить комментарий