1. Основы Nginx
-
Что такое Nginx?
Nginx — это высокопроизводительный HTTP-сервер и веб-сервер с обратным прокси-сервером. Его основные функции заключаются в том, что он занимает меньше памяти и обладает мощными возможностями параллелизма.
-
Что умеет Nginx (сценарии применения)
- Http-сервер (веб-сервер) имеет очень высокую производительность, уделяет большое внимание эффективности и выдерживает испытание высокой нагрузкой.
Он поддерживает 50 000 одновременных подключений. Мало того, использование ЦП и памяти также очень низкое: всего 10 000 неактивных подключений занимают 2,5 М памяти. - Обратный прокси-сервер (браузер отправляет запрос к Nginx, обратный прокси-сервер Nginx выбирает исходный сервер для получения результата и, наконец, возвращает его клиентскому браузеру Nginx + Tomcat) - Форвард прокси (внутренний доступ к гуглу) - Сервер балансировки нагрузки (несколько Tomcats обратно проксируются Nginx, такой процесс поиска и определения называется балансировкой нагрузки) - Динамическое и статическое разделение (статические ресурсы напрямую обрабатываются Nginx, динамические запросы сервлетов передаются в Tomcat)
- Возможности Nginx
- Кроссплатформенность
- Простая конфигурация
- Высокий уровень параллелизма, хорошая производительность, стабильность, низкий уровень простоев
- Основная команда Nginx
- (Выполнить в каталоге установки nginx)./nginx
- nginx -s stop
- nginx -s reload (перезагрузить файл конфигурации nginx.conf, нода Master не перезагружается)
2. Интерпретация файлов конфигурации ядра Nginx
Файл конфигурации ядра Nginx conf/nginx.conf содержит три части содержимого: глобальный блок, блок событий и блок http.
-
глобальный блок
От начала файла конфигурации до содержимого между блоком событий конфигурация здесь влияет на общую работу сервера nginx, такую как количество рабочих процессов, расположение журналов ошибок и т. д.
-
блок событий
Блок событий в основном влияет на сетевое соединение между сервером nginx и пользователем, например, worker_connections 1024, что указывает на то, что максимальное количество соединений, поддерживаемых каждым рабочим процессом, равно 1024.
-
http-блок Блок http — это наиболее часто настраиваемая часть, конфигурация виртуального хоста, конфигурация порта прослушивания, переадресация запросов, обратный прокси-сервер, балансировка нагрузки и т. д.⚠️Можно настроить несколько серверов по http
3. Обратный прокси для сценариев приложений Nginx
- Разверните кот 8080
- Изменить конфигурацию nginx
- nginx -s relod (перезапускаем, конфигурация вступает в силу)
- Обратите внимание на синтаксис местоположения, сервер/местоположение в nginx == Host/Context в tomcat
В конфигурационном файле nginx расположение в основном имеет следующие формы:location [=|~|~*|^~] /uri/ { … }
- местоположение точного совпадения = /lagou { }
- соответствует префиксу пути ^~ /lagou { }
- расположение соответствия регулярному выражению без учета регистра ~* /lagou { }
- Местоположение обычного соответствия ~ /lagou { }
- Обычный префикс пути соответствует местоположению /lagou { }
4. Балансировка нагрузки сценариев приложений Nginx
1. Стратегия балансировки нагрузки Nginx
- опрос (политика по умолчанию)
upstream lagouServer{ server 111.229.248.243:8080; server 111.229.248.243:8082; } location /abc { proxy_pass http://lagouServer/; }
- вес вес
upstream lagouServer{ server 111.229.248.243:8080 weight=1; server 111.229.248.243:8082 weight=2; }
- ip_hash идет по ip, каждый клиент будет входить в один и тот же сервис
upstream lagouServer{ ip_hash; server 111.229.248.243:8080; server 111.229.248.243:8082; }
5. Динамическое и статическое разделение сценариев применения Nginx
6. Анализ основного механизма процесса Nginx
1. Запуск Nginx
Он работает в фоновом режиме как многопроцессный демон с одним главным процессом и несколькими рабочими процессами.
- Основной процесс
- Получать внешние сигналы, такие как сигналы отправки Worker, такие как nginx -s reload
- Monitor Worker, Worker аварийно завершает работу, Master автоматически перезапускает нового Worker
- Рабочий процесс
- Для обработки сетевых запросов каждый Worker независим, и запрос может быть только в одном Worker. Можно установить количество рабочих процессов, и общая настройка такая же, как и количество ядер ЦП машины.
2. Схематическая диаграмма модели процесса Nginx
-
Например, используйте ./nginx -s reload, чтобы проиллюстрировать эту часть обработки сигналов nginx.
- Мастер выполняет определение синтаксиса в файлах конфигурации
- Конфигурация (например, если порт прослушивания изменен, попробуйте назначить новый порт прослушивания)
- Если конфигурация прошла успешно, используйте новую конфигурацию и создайте новый рабочий процесс.
- новый рабочий успех, старый рабочий близко
- Старый рабочий процесс будет продолжать работать до тех пор, пока не будет больше запросов на закрытие.
-
Рабочий процесс обрабатывает запрос
- Когда приходит запрос, есть несколько рабочих процессов, и каждый рабочий может обработать запрос.
- После запуска Мастера он установит сокетное соединение, а затем разветвит несколько рабочих процессов. Таким образом, дескриптор прослушивателя listenfd всех рабочих процессов становится доступным для чтения при поступлении нового соединения.
- nginx использует мьютекс, чтобы гарантировать, что только один рабочий процесс обрабатывает запрос. Процесс, который получил мьютекс, регистрирует событие чтения listenfd, вызывает accept в событии чтения, чтобы принять соединение, затем анализирует, обрабатывает и возвращает клиенту
-
Преимущества многопроцессорной модели nginx
- Каждый рабочий процесс независим, и его не нужно блокировать, что экономит накладные расходы.
- Каждый рабочий процесс независим и не влияет друг на друга.Если один из рабочих процессов завершается аварийно, другие могут продолжать предоставлять услуги.
- Модель с несколькими процессами обеспечивает поддержку механизма горячего развертывания с перезагрузкой.
Резюме nginx "laguedu"