NGINX. Книга рецептов
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Йонге де Дерек
Перевод:
Беликов Дмитрий Анатольевич
Год издания: 2020
Кол-во страниц: 176
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Магистратура
ISBN: 978-5-97060-790-9
Артикул: 739796.01.99
Из этой книги вы узнаете, как получить максимальную отдачу от NGINX с открытым исходным кодом и NGINX Plus. Вы получите простые рекомендации по вопросам разного уровня сложности - начиная с установки ПО и настройки основных функций до устранения неполадок. Автор описывает новые функции NGINX с открытым исходным кодом, такие как поддержка gRPC, сервер активной доставки НТТР/2 и алгоритм балансировки нагрузки Random with Two Choices для кластерных сред, а также новые функции NGINX Plus.
Издание предназначено для администраторов и разработчиков сайтов.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дерек де Йонге 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 со ссылкой на подозрительные материалы. Мы высоко ценим любую помощь по защите наших авторов, помогающую предоставлять вам качественные материалы.