Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

NGINX. Книга рецептов

Покупка
Артикул: 739796.01.99
Доступ онлайн
599 ₽
В корзину
Из этой книги вы узнаете, как получить максимальную отдачу от NGINX с открытым исходным кодом и NGINX Plus. Вы получите простые рекомендации по вопросам разного уровня сложности - начиная с установки ПО и настройки основных функций до устранения неполадок. Автор описывает новые функции NGINX с открытым исходным кодом, такие как поддержка gRPC, сервер активной доставки НТТР/2 и алгоритм балансировки нагрузки Random with Two Choices для кластерных сред, а также новые функции NGINX Plus. Издание предназначено для администраторов и разработчиков сайтов.
Йонге де, Д. NGINX. Книга рецептов : практическое руководство / Д. де Йонге ; пер. с анг. Д. А. Беликова. - Москва : ДМК Пресс, 2020. - 176 с. - ISBN 978-5-97060-790-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1094952 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Дерек де Йонге

NGINX.  
Книга рецептов

Продвинутые рецепты высокопроизводительной 
балансировки нагрузки

NGINX Cookbook

Advanced Recipes for High Performance  
Load Balancing

Derek DeJonghe

Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo

2019 UPDATE

Москва, 2020

Дерек де Йонге

NGINX. Книга рецептов

Продвинутые рецепты высокопроизводительной 
балансировки нагрузки

Перевод с английского Беликова Д. А.

УДК   004.42
ББК   32.972
Й11

Й11   Дерек де Йонге
NGINX. Книга рецептов. / пер. с англ. Д. А. Беликова. – М.: ДМК Пресс, 
2020. – 176 с.: ил.

            ISBN 978-5-97060-790-9

Из этой книги вы узнаете, как получить максимальную отдачу от 
NGINX с открытым исходным кодом и NGINX Plus. Вы получите простые рекомендации по вопросам разного уровня сложности – начиная с 
установки ПО и настройки основных функций до устранения неполадок. 
Автор описывает новые функции NGINX с открытым исходным кодом, 
такие как поддержка gRPC, сервер активной доставки HTTP/2 и алгоритм 
балансировки нагрузки Random with Two Choices для кластерных сред, а 
также новые функции NGINX Plus.
Издание предназначено для администраторов и разработчиков сайтов.

УДК  004.42
ББК  32.972

Original English language edition published by O'Reilly Media, Inc. Copyright © 2019 
O'Reilly Media Inc. All rights reserved. Russian-language edition copyright © 2019 by 
DMK Press. All rights reserved.

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

ISBN 978-1-49196-893-2 (англ.)         © 2019 O'Reilly Media Inc. All rights reserved.
ISBN 978-5-97060-790-9 (рус.)              © Оформление, перевод на русский язык, издание,
 
      ДМК Пресс, 2020

Оглавление

Предисловие от издательства ...........................................................................................10

Предисловие .........................................................................................................................11

Глава 1. Основы ....................................................................................................................12

1.0. Введение ......................................................................................................................................12
1.1. Установка на компьютер с Debian/Ubuntu ....................................................................12
1.2. Установка на компьютер с RedHat/CentOS  ...................................................................13
1.3. Установка NGINX Plus .............................................................................................................14
1.4. Проверка установки ................................................................................................................15
1.5. Ключевые файлы, команды и каталоги...........................................................................16
1.6. Обслуживание статического контента ............................................................................18
1.7. Аккуратная перезагрузка ......................................................................................................19

Глава 2. Высокопроизводительная балансировка нагрузки .........................................20

2.0. Введение ......................................................................................................................................20
2.1. Балансировка нагрузки для HTTP .....................................................................................21
2.2. Балансировка нагрузки для TCP ........................................................................................23
2.3. Балансировка нагрузки UDP................................................................................................24
2.4. Методы балансировки нагрузки ........................................................................................26
2.5. Директива sticky cookie .........................................................................................................28
2.6. Директива sticky learn ............................................................................................................29
2.7. Директива sticky route ............................................................................................................30
2.8. Осушение соединения ...........................................................................................................32
2.9. Пассивные проверки работоспособности .....................................................................33
2.10. Активные проверки работоспособности .....................................................................34
2.11. Медленный запуск ................................................................................................................36
2.12. Проверки работоспособности TCP .................................................................................37

Глава 3. Управление трафиком ..........................................................................................39

3.0. Введение ......................................................................................................................................39
3.1. A/B-тестирование .....................................................................................................................39
3.2. Использование модуля GeoIP и базы данных ..............................................................40
3.3. Ограничение доступа в зависимости от страны .........................................................43

 Оглавление

3.4. Поиск исходного клиента .....................................................................................................44
3.5. Ограничение подключений .................................................................................................45
3.6. Ограничение скорости ...........................................................................................................46
3.7. Ограничение пропускной способности ...........................................................................48

Глава 4. Массивно масштабируемое кеширование контента .......................................50

4.0. Введение ......................................................................................................................................50
4.1. Кеширование зон .....................................................................................................................50
4.2. Хеш-ключи кеширования......................................................................................................52
4.3. Обход кеширования ................................................................................................................53
4.4. Производительность кеширования ..................................................................................54
4.5. Продувка ......................................................................................................................................55
4.6. Директива slice .........................................................................................................................56

Глава 5. Программируемость и автоматизация ..............................................................58

5.0. Введение ......................................................................................................................................58
5.1. API NGINX Plus ..........................................................................................................................59
5.2. Хранилище типа ключ/значение .......................................................................................63
5.3. Установка с использованием приложения Puppet .....................................................65
5.4. Установка с использованием системы Chef ..................................................................67
5.5. Установка с использованием системы Ansible.............................................................69
5.6. Установка с использованием SaltStack ...........................................................................70
5.7. Автоматизация конфигураций с помощью Consul ......................................................72

Глава 6. Аутентификация ....................................................................................................75

6.0. Введение ......................................................................................................................................75
6.1. Базовая HTTP-аутентификация ..........................................................................................75
6.2. Подзапросы аутентификации .............................................................................................77
6.3. Валидация токенов в формате JWT ..................................................................................78
6.4. Создание веб-ключей в формате JSON...........................................................................79
6.5. Аутентификация пользователей с помощью существующего протокола 
единого входа OpenID Connect ..........................................................................................81

6.6. Получение ключа в формате JSON от Google ..............................................................82

Глава 7. Контроль безопасности ........................................................................................84

7.0. Введение ......................................................................................................................................84
7.1. Доступ на основе IP-адреса .................................................................................................84
7.2. Разрешение совместного использования ресурсов между разными 
источниками ...............................................................................................................................85

Оглавление  7

7.3. Шифрование на стороне клиента ......................................................................................87
7.4. Восходящее шифрование .....................................................................................................89
7.5. Безопасность местоположения ...........................................................................................90
7.6. Генерация безопасного соединения при помощи ключа безопасности ...........91
7.7. Безопасность местоположения при помощи ограниченной даты ........................92
7.8. Генерация ссылки с ограниченным сроком ...................................................................94
7.10. Перенаправление на HTTPS, когда SSL/TLS прекращается до NGINX ............97
7.11. Строгая безопасность доставки HTTP ...........................................................................98
7.12. Удовлетворение любого числа методов безопасности ..........................................98
7.13. Динамичное ослабление DDoS .....................................................................................100

Глава 8. HTTP/2 ..................................................................................................................102

8.0. Введение ...................................................................................................................................102
8.1. Базовая настройка ................................................................................................................102
8.2. gRPC ............................................................................................................................................103
8.3. Сервер активной доставки HTTP/2 ...............................................................................106

Глава 9. Управление сложными потоками медиа ........................................................107

9.0. Введение ................................................................................................................................... 107
9.1. Обслуживание MP4 и FLV .................................................................................................. 107
9.2. Организация потоков с помощью HLS .........................................................................108
9.3. Организация потоков с помощью HDS ........................................................................110
9.4. Пределы полосы пропускания.........................................................................................110

Глава 10. Развертывание в облачных решениях..........................................................112

10.0. Введение ................................................................................................................................112
10.1. Автоматическая настройка в AWS................................................................................112
10.2. Маршрутизация в узлы NGINX без ELB .....................................................................115
10.3. NLB-сэндвич .........................................................................................................................116
10.4. Развертывание из AWS Marketplace ........................................................................... 117
10.5. Создание образа виртуальной машины NGINX в Azure .....................................119
10.6. Балансировка нагрузки поверх наборов масштабирования NGINX  
в Azure ........................................................................................................................................122

10.7. Развертывание через Azure Marketplace ..................................................................123
10.8. Развертывание в Google Compute Engine  ..............................................................124
10.9. Создание образа Google Compute...............................................................................125
10.10. Создание прокси-сервера для Google App Engine ............................................126

 Оглавление

Глава 11. Контейнеры/Микросервисы ...........................................................................128

11.0. Введение ................................................................................................................................128
11.1. Записи DNS SRV ..................................................................................................................128
11.2. Использование официального образа NGINX ........................................................130
11.3. Создание Dockerfile NGINX.............................................................................................131
11.4. Сборка образа NGINX Plus .............................................................................................133
11.5. Использование переменных среды в NGINX ..........................................................135
11.6. Контроллер Ingress в Kubernetes ................................................................................. 137
11.7. Маршрутизатор OpenShift ...............................................................................................140

Глава 12. Режимы развертывания высокой доступности ...........................................142

12.0. Введение ................................................................................................................................142
12.1. Режим высокой доступности NGINX ...........................................................................142
12.2. Балансировка нагрузки балансировщиками с помощью DNS ........................143
12.3. Балансировка нагрузки в EC2 .......................................................................................144
12.4. Синхронизация конфигурации .....................................................................................145
12.5. Совместное использование состояния с помощью Zone Sync .........................148

Глава 13. Расширенный мониторинг активности .........................................................150

13.0. Введение ................................................................................................................................150
13.1. Активация модуля Stub Status с открытым исходным кодом ..........................150
13.2. Активация инструментальной панели мониторинга NGINX Plus ....................151
13.3. Сбор метрик с помощью API NGINX Plus..................................................................153

Глава 14. Отладка и устранение неполадок с помощью журналов доступа, 
журналов ошибок и отслеживания запросов ...............................................................157

14.0. Введение ................................................................................................................................ 157
14.1. Настройка журналов доступа ........................................................................................ 157
14.3. Отправка журналов в Syslog..........................................................................................159
14.4. Трассировка запросов ......................................................................................................161

Глава 15. Настройка производительности .....................................................................163

15.0. Введение ................................................................................................................................163
15.1. Автоматизация тестов с помощью драйверов нагрузки ....................................163
15.2. Сохраняем подключения открытыми для клиентов ............................................164
15.3. Сохраняем подключения открытыми для вышестоящих серверов ...............165
15.4. Буферизация ответов ........................................................................................................166
15.5. Буферизация журналов доступа .................................................................................. 167
15.6. Настройка ОС .......................................................................................................................168

Оглавление  9

Глава 16. Советы по практической эксплуатации и заключение ...............................170

16.0. Введение ................................................................................................................................170
16.1. Использование директивы include для чистых настроек ..................................170
16.2. Отладка конфигураций ....................................................................................................171
16.3. Заключение ...........................................................................................................................173

Сведения об авторе ...........................................................................................................174

Предметный указатель .....................................................................................................175

Предисловие от издательства

Отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете 
об этой книге, – что понравилось или, может быть, не понравилось. Отзывы 
важны для нас, чтобы выпускать книги, которые будут для вас максимально 
полезны.
Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя 
на страницу книги, и оставить комментарий в разделе «Отзывы и рецензии». 
Также можно послать письмо главному редактору по адресу dmkpress@gmail.
com, при этом напишите название книги в теме письма.
Если есть тема, в которой вы квалифицированы, и вы заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу  
http://dmkpress.com/authors/publish_book/ или напишите в издательство по ад ресу 
dmkpress@gmail.com.

Список опечаток

Хотя мы приняли все возможные меры для того, чтобы удостовериться в качестве наших текстов, ошибки все равно случаются. Если вы найдете ошибку 
в одной из наших книг – возможно, ошибку в тексте или в коде, – мы будем 
очень благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других 
читателей от расстройств и поможете нам улучшить последующие версии этой 
книги.
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них 
главному редактору по адресу dmkpress@gmail.com, и мы исправим это в следующих тиражах.

Нарушение авторских прав

Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «ДМК Пресс» и O'Reilly очень серьезно относятся к вопросам защиты 
авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконно выполненной копией любой нашей книги, пожалуйста, сообщите нам адрес 
копии или веб-сайта, чтобы мы могли применить санкции.
Пожалуйста, свяжитесь с нами по адресу электронной почты dmkpress@gmail.
com со ссылкой на подозрительные материалы.
Мы высоко ценим любую помощь по защите наших авторов, помогающую 
предоставлять вам качественные материалы.

Предисловие

Добро пожаловать в обновленное издание «NGINX. Книга рецептов». 
Прошло почти два года, с тех пор как издательство O'Reilly опубликовало первую версию книги. С того времени многое изменилось, кроме 
одного: каждый день все больше и больше сайтов по всему миру отдают 
предпочтение NGINX. Сегодня их 300 млн, почти вдвое больше, когда 
вышло первое издание.
Есть много причин, по которым использование NGINX набирает популярность спустя 14 лет после его появления. Это швейцарский армейский нож: NGINX может быть веб-сервером, балансировщиком нагрузки, кешировать контент и быть API-шлюзом. Но, возможно, еще более 
важным фактом является то, что он надежен.
Эта книга покажет вам, как получить максимальную отдачу от NGINX 
с открытым исходным кодом и NGINX Plus. Вы найдете свыше 150 страниц, содержащих простые в использовании рецепты, охватывающие 
все от того, как правильно установить NGINX, настроить все основные 
функции до отладки и устранения неполадок.
Эта обновленная версия также включает в себя описание новых функций с открытым исходным кодом, таких как поддержка gRPC, сервер 
активной доставки HTTP/2 и алгоритм балансировки нагрузки Random 
with Two Choices для кластерных сред, а также новые функции NGINX 
Plus, такие как поддержка совместного использования состояния, новый API NGINX Plus и хранилище типа ключ/значение. На этих страницах рассказывается почти все, что вам нужно знать о NGINX.
Мы надеемся, что вам понравится эта книга и она будет способствовать вашему успеху в создании и развертывании приложений, которые 
все мы используем.

Файсаль Меном,
менеджер по маркетингу продукции, NGINX Inc.

Глава 1

Основы

1.0. Введение

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

1.1. Установка на компьютер с Debian/Ubuntu

Задача

Вам необходимо установить 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 в зависимости от дистрибутива. Замените слово CODENAME 
на кодовое имя вашего дистрибутива: jessie или stretch, если это Debian, 
либо trusty, xenial, artful или bionic, если это Ubuntu. Затем выполните 
приведенные ниже команды:

wget http://nginx.org/keys/nginx_signing.key

apt-key add nginx_signing.key

1.2. Установка на компьютер с RedHat/CentOS   13

apt-get update

apt-get install -y nginx

/etc/init.d/nginx start

Обсуждение

Файл, который вы только что создали, инструктирует систему управления пакетами apt использовать Официальный репозиторий пакетов NGINX. С помощью следующих далее команд вы скачиваете ключ 
подпи си пакета NGINX GPG и импортируете его в apt. Предоставление 
apt ключа подписи активирует систему, чтобы выполнить проверку 
пакетов из репозитория. Команда apt-get-update велит системе apt обновить свои листинги пакетов из известных репозиториев. После обновления списка пакетов вы можете установить NGINX Open Source из 
официального репозитория NGINX. После его установки последняя команда запускает NGINX.

1.2. Установка на компьютер с RedHat/CentOS 

Задача

Вам необходимо установить 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

 Глава 1. Основы

systemctl start nginx

firewall-cmd --permanent --zone=public --add-port=80/tcp

firewall-cmd –reload

Обсуждение

Файл, который вы только что создали, инструктирует систему управления пакетами yum использовать Официальный репозиторий пакетов 
NGINX. С помощью следующих далее команд вы устанавливаете NGINX 
Open Source из Официального репозитория, сообщаете systemd активировать NGINX во время загрузки и велите ей запустить его сейчас. 
Команды брандмауэра открывают порт 80 для протокола TCP, который 
является значением порта по умолчанию для HTTP. С помощью последней команды вы выполняете перезагрузку брандмауэра для фиксации 
изменений.

1.3. Установка NGINX Plus

Задача

Вам необходимо установить NGINX Plus. 

Решение

Посетите страницу по адресу http://cs.nginx.com/repo_setup. В раскрывающемся меню выберите устанавливаемую вами ОС и следуйте инструкциям. Эти инструкции аналогичны инструкциям по установке решений 
с открытым исходным кодом; однако вам необходимо установить сертификат для аутентификации в репозитории NGINX Plus.

Обсуждение

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

1.4. Проверка установки  15

1.4. Проверка установки

Задача

Вам нужно оценить правильность установки 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. Результат показывает два запущенных 
процесса, master и worker. Если NGINX запущен, вы всегда будете видеть 
главный процесс. Чтобы увидеть инструкции по запуску NGINX, см. следующий раздел. Чтобы понять, как запустить NGINX в качестве демона, 
примените методологии init.d или systemd.
Чтобы убедиться, что NGINX возвращает запросы правильно, используйте свой браузер и отправьте запрос на ваш компьютер или воспользуйтесь командой curl:

$ curl localhost

Вы увидите страницу приветствия NGINX.

Обсуждение

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

Доступ онлайн
599 ₽
В корзину