Nginx от мелкого к глубокому

Nginx

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
    location [=|~|~*|^~] /uri/ { … }
    
    В конфигурационном файле nginx расположение в основном имеет следующие формы:
    1. местоположение точного совпадения = /lagou { }
    2. соответствует префиксу пути ^~ /lagou { }
    3. расположение соответствия регулярному выражению без учета регистра ~* /lagou { }
    4. Местоположение обычного соответствия ~ /lagou { }
    5. Обычный префикс пути соответствует местоположению /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.

    1. Мастер выполняет определение синтаксиса в файлах конфигурации
    2. Конфигурация (например, если порт прослушивания изменен, попробуйте назначить новый порт прослушивания)
    3. Если конфигурация прошла успешно, используйте новую конфигурацию и создайте новый рабочий процесс.
    4. новый рабочий успех, старый рабочий близко
    5. Старый рабочий процесс будет продолжать работать до тех пор, пока не будет больше запросов на закрытие.
  • Рабочий процесс обрабатывает запрос

    • Когда приходит запрос, есть несколько рабочих процессов, и каждый рабочий может обработать запрос.
    • После запуска Мастера он установит сокетное соединение, а затем разветвит несколько рабочих процессов. Таким образом, дескриптор прослушивателя listenfd всех рабочих процессов становится доступным для чтения при поступлении нового соединения.
    • nginx использует мьютекс, чтобы гарантировать, что только один рабочий процесс обрабатывает запрос. Процесс, который получил мьютекс, регистрирует событие чтения listenfd, вызывает accept в событии чтения, чтобы принять соединение, затем анализирует, обрабатывает и возвращает клиенту
  • Преимущества многопроцессорной модели nginx

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

Резюме nginx "laguedu"