Глава 1. Основы
Содержание
Чтобы начать работу с NGINX с открытым исходным кодом или NGINX Plus, вам вначале требуется установить его в некой системе и изучить кое- какие основы. В этой главе вы изучите как устанавливать NGINX, где располагаются основные файлы настройки, а также команды администрирования. Вы также изучите как проверять вашу установку и делать запросы к установленному по умолчанию серверу.
Задача
Вам требуется установить NGINX с открытым исходным кодом в машине с Debian или Ubuntu.
Решение
Создайте некий файл с названием /etc/apt/sources.list.d/nginx.list
, который
содержит следующее содержимое:
deb http://nginx.org/packages/mainline/OS/ CODENAME nginx
deb-src http://nginx.org/packages/mainline/OS/ CODENAME nginx
В зависимости от вашего дистрибутива замените в этом файле OS
в самом
конце каждого из URL на ubuntu
или debian
.
Для Debian измените CODENAME
на jessie
или stretch
, а для Ubuntu на trusty
,
xenial
,artful
или
bionic
. Затем исполните следующие команды:
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
apt-get update
apt-get install -y nginx
/etc/init.d/nginx start
Обсуждение
Созданный вами файл инструктирует систему управления пакетами apt
применять
Официальный репозиторий пакетов NGINX. Следующая команда выгружает ключ GPG подписи пакета NGINX и импортирует его в
apt
. Предоставление для apt
этого ключа подписи
делает возможной проверку подлинности пакетов из репозитория. Следующая команда apt-get update
инструктирует систему apt
обновить её перечни пакетов из известных репозиториев.
После того как данный список пакетов освежён, вы можете устанавливать NGINX с открытым исходным кодом из официального
репозитория NGINX. После того как вы его установите, заключительная команда запускает NGINX.
Задача
Вам требуется установить NGINX с открытым исходным кодом в машине в RedHat или CentOS.
Решение
Создайте некий файл с названием /etc/yum.repos.d/nginx.repo
, который
содержит следующее содержимое:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
В зависимости от вашего дистрибутива замените в этом файле OS
в самом
конце каждого из URL на rhel
или centos
.
Измените OSRELEASE
на 6
или 7
, для версий 6.x или 7.x, соответственно. Затем исполните следующие команды:
yum -y install nginx
systemctl enable nginx
systemctl start nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload
Обсуждение
Созданный вами для данного решения файл инструктирует вашу систему управления пакетами yum
в качестве репозитория пакетов применять Официальный репозиторий открытого исходного кода NGINX, указывает
systemd
на разрешение NGINX во время загрузки и сообщает ему о необходимости запуска
прямо сейчас. Команды межсетевого экрана открывают порт 80
для протокола TCP,
который выступает значением порта по умолчанию для HTTP. Самая последняя команда перезагружает межсетевой экран для фиксации
этих изменений.
Задача
Вам требуется установить NGINX Plus.
Решение
Посетите http://cs.nginx.com/repo_setup. В полученном ниспадающем меню выберите ту ОС, в которой вы устанавливаете, а затем следуйте получаемым инструкциям. Эти инструкции аналогичны тем, которые применяются при установке решений с открытым исходным кодом; тем не менее, вам требуется установить некий сертификат чтобы соответствовать аутентификации основного репозитория NGINX Plus.
Обсуждение
NGINX отслеживает получаемое вами руководство по установки в современном состоянии с инструкциями по установке выбранного NGINX Plus. В зависимости от вашей ОС и версии эти инструкции слегка отличаются, но имеется одно общее место. Вам следует зарегистрироваться в самом портале NGINX для выгрузки сертификата и ключа для предоставления их вашей системе, которые будут применяться для аутентификации в общем репозитории NGINX Plus.
Задача
Вы желаете удостовериться в правильности установки NGINX и проверить её версию.
Решение
Вы можете удостовериться в верности установки NGINX и проверить её версию применив следующую команду:
$ nginx -v
nginx version: nginx/1.15.3
Как показывает это пример, получаемый отклик отображает номер версии.
Вы можете подтвердить что NGINX запущен применив такую команду:
$ ps -ef | grep nginx
root 1738 1 0 19:54 ? 00:00:00 nginx: master process
nginx 1739 1738 0 19:54 ? 00:00:00 nginx: worker process
Применённая команда ps
перечисляет запущенные процессы. Направляя её в конвейер
через grep
вы можете отыскивать в получаемом выводе специфичные слова. Данный
пример использует grep
для поиска nginx
.
Если NGINX запущен, вы всегда можете наблюдать хозяина и один или более процессов исполнителей. Относительно инструкций
по запуску NGINX отсылаем вас к следующему разделу. Для отслеживания того как NGINX запускается в качестве демона
применяйте методологии init.d
или systemd
.
Чтобы подтвердить тот факт что NGINX возвращает корректные запросы, воспользуйтесь браузером для выполнения запросов
в своей машине или примените curl
:
$ curl localhost
Вы обнаружите NGINX установленный по умолчанию сайт HTML Welcome.
Обсуждение
Команда nginx
позволяет вам взаимодействовать с самим исполняемым файлом NGINX
для проверки его версии, перечисления установленных модулей, проверки настроек и отправки сигналов его процессу хозяина.
Для обслуживания им запросов, NGINX должен быть запущен. Команда ps
является
безошибочным вариантом выявления того запущен ли NGINX в качестве демона или в фоновом режиме. Устанавливаемая по
умолчанию конфигурация по умолчанию запускает NGINX в качестве статического сервера сайта HTTP с портом
80
. Вы можете проверить этот установленный по умолчанию сайт выполняя некий запрос
HTTP к машине с localhost
, а также с соответствующим адресом IP и именем хоста.
Задача
Вам требуется понимать все важные каталоги и команды NGINX.
Решение
Файлы и каталоги NGINX
/etc/nginx/
Каталог
/etc/nginx/
для настройки по умолчанию является корнем для данного сервера NGINX. Внутри этого каталога вы можете обнаружить файлы настроек, которые указывают NGINX как ему себя вести./etc/nginx/nginx.conf
Файл
/etc/nginx/nginx.conf
выступает установленной по умолчанию точкой входа, которую применяет сама служба NGINX. Этот файл конфигурации настраивает глобальные установки для таких моментов как процесс исполнителя, регулировка, регистрация, загрузка динамических модулей, а также ссылки на прочие файлы настройки NGINX. В установленной по умолчанию конфигурации этот файл/etc/nginx/nginx.conf
содержит блок верхнего уровняCode
, который содержит все файлы настроек в описанном далее каталоге./etc/nginx/conf.d/
Каталог
/etc/nginx/conf.d/
содержит устанавливаемый по умолчанию файл конфигурации сервера HTTP. Заканчивающиеся на.conf
файлы из этого каталога включаются в блок верхнего уровняhttp
внутри основного файла/etc/nginx/nginx.conf/
. Самым лучшим приёмом на практике для организации вашей конфигурации будет применение оператораinclude
с тем, чтобы ваши файлы настройки были краткими. В некоторых репозиториях пакетов эта папка именуетсяsites-enabled
, а файлы настроек связываются из некой папки с названиемsite-available
; это соглашение является устаревшим./var/log/nginx/
Каталог
/var/log/nginx/
является устанавливаемым по умолчанию местоположением журналов NGINX. Внутри этого каталога вы можете обнаружить файлaccess.log
и файлerror.log
. Первый является журналом доступа и содержит записи для каждого обслуженного запроса NGINX. Второй файл регистрации ошибок содержит события с ошибками и отладочную информацию когда включён модуль отладки.
Команды NGINX
nginx -h
Отображает меню подсказок.
nginx -v
Выдаёт номер версии NGINX.
nginx -V
Показывает номер версии NGINX, информацию о сборке и параметры конфигурации, которые отображают собранные модули в данном исполняемом файле NGINX.
nginx -t
Проверка конфигурации NGINX.
nginx -T
Проверяет конфигурацию NGINX и выводит на ваш экран допустимые настройки. Эта команда полезна при поиске поддержки.
nginx -s signal
Данный флаг
-s
отправляет некий сигнал имеющемуся процессу хозяина NGINX. Вы имеете возможность отправлять такие сигналы какstop
,quit
,reload
иreopen
. Сигналstop
немедленно отключает имеющийся процесс NGINX. Синалquit
останавливает процесс NGINX после того как он завершит обработку влетевших в него запросов. Сигналreload
перезагружает данную конфигурацию. Сигналreopen
инструктирует NGINX повторно открыть файлы журналов.
Обсуждение
Понимая эти ключевые файлы, каталоги и команды, вы находитесь в хороших условиях для того чтобы приступить к работе с NGINX.
Освоив эти знания, вы способны изменять установленные по умолчанию файлы конфигурации и проверять изменения применяя
команду nginx -t
. Если ваша проверка успешна, вы также знаете как указать NGINX на
необходимость перезагрузить его настройки при помощи соответствующей команды
nginx -s reload
.
Задача
Вам требуется обслуживать статическое содержимое с помощью NGINX.
Решение
Перепишите установленную в /etc/nginx/conf.d/default.conf
по умолчанию конфигурацию сервера HTTP со следующим образцом настроек NGINX:
server {
listen 80 default_server;
server_name www.example.com;
location / {
root /usr/share/nginx/html;
# alias /usr/share/nginx/html;
index index.html index.htm;
}
}
Обсуждение
Данная конфигурация обслуживает статические файлы поверх HTTP по порту 80
из своего каталога /usr/share/nginx/html/
. Самая первая строка в этой
конфигурации определяет блок server
. Он задаёт новый контекст для отслеживания
NGINX. Строка два указывает NGINX на необходимость выполнять ожидание по порту 80
,
а значение параметра default_server
указывает NGINX на необходимость применения
данного сервера в качестве контекста по умолчанию для порта 80
. Директива
server_name
определяет значение имени хоста или имён хостов на которые будут
направляться запросы для данного сервера. Если данная конфигурация не определила данный контекст в качестве
default_server
, NGINX будет направлять запросы к этому серверу только когда сам
заголовок хоста HTTP соответствует тому значению, которое производится для имеющейся директивы
server_name
.
Блок location
определяет некую настройку на основе значения пути в получаемом
URL. Значение пути, или часть всего URL, остающаяся после значения домена имеет сокращение URI. Лучше всего NGINX
будет устанавливать соответствие запрошенному значению URI блоку location
. Данный
образец применяет /
для соответствия всем запросам. Значение директивы
root
указывает NGINX где отыскивать статические файлы при обслуживании содержимого
для этого заданного контекста. Значение URI самого запроса добавляется в конец к значению директивы root
при поиске запрашиваемого файла. Если мы предоставили некий префикс URI для своей директивы location
,
он был бы добавлен в конец получаемого пути, только если мы не применяем значение каталога alias
вместо root
. Наконец, значение директивы index
снабжает NGINX неким именем файла по умолчанию, либо списка файлов для проверки в том случае, когда не указан дальнейший
путь.
Задача
Вам требуется перезагрузить свою конфигурацию без отбрасывания пакетов.
Решение
Воспользуйтесь методом NGINX reload
для достижения аккуратной перезагрузки вашей
конфигурации без останова самого сервера:
$ nginx -s reload
Данный пример перезагружает вашу систему NGINX при помощи самого исполняемого файла NGINX для отправки сигнала имеющемуся процессу хозяина.
Обсуждение
Перезагрузка имеющейся конфигурации NGINX без остановки самого сервера предоставляет возможность изменения настроек на лету без какого бы то ни было отбрасывания пакетов. Для некой динамичной среды с высоким значением работы без останова вам будет необходимо изменять в некий момент времени изменять свои настройки балансировки нагрузки. NGINX позволяет осуществлять это оставляя в рабочем состоянии сам балансировщик нагрузки. Это свойство делает возможными многочисленные возможности, такие как повторный запуск управления настройками в некой среде в реальном режиме времени, или сборку некого приложения и осведомлённого о кластере модуля в какую- то динамическую конфигурацию с последующей перезагрузкой NGINX для выполнения его соответствия потребностям вашего окружения.