Правильно ли я понимаю принцип работы веб-сервера?

Только начинаю разбираться с серверами, в частности интересует nginx. В документации написано:
У nginx есть один главный и несколько рабочих процессов. Основная задача главного процесса — чтение и проверка конфигурации и управление рабочими процессами. Рабочие процессы выполняют фактическую обработку запросов.

Если я к примеру использую вместе с ним Unicorn (или что либо другое).
  1. Под рабочим процессом (worker) Nginx'а в данном случае имеется в виду запущенный Unicorn или что-то другое?
  2. Насколько правильно я понимаю работу? Например на порту 80 работает nginx и принимает запросы - статику отдаёт сам, остальные запросы проксирует Юникорнам. Например в настройке nginx написано worker_processes 2; и в настройке Юникорна написано, что рабочих процессов 3, тоесть одновременно работает 2 Юникорна, каждый из которых имеет 3 рабочих процесса, верно? Nginx сам решает какому из Юникорнов отдать запрос, и соответственно Юникорн сам решает какому из своих рабочих worker'ов его передать? Приблизительно такая схема

Исправьте меня, пожалуйста, если не прав. Буду очень признателен!
  • Вопрос задан
  • 5355 просмотров
Пригласить эксперта
Ответы на вопрос 3
@ldvldv
Например в настройке nginx написано worker_processes 2

будет 1 мастер процесс и 2 рабочих = 3 nginx
askubuntu.com/questions/399431/how-many-nginx-proc...

в настройке Юникорна написано, что рабочих процессов 3

будет 1 мастер процесс и 3 рабочих = 4 unicorn
varaneckas.com/blog/unicorn-procline

Т.е. после поступления запроса на 80 порт nginx передает его одному из своих рабочих процессов, который в свою очередь проксирует его (например через сокет) рабочим процессам unicorn.
Ответ написан
@polozad
Nginx стартует как мастер-процесс, который форкает количество воркеров, описанных в конфиге. Воркер - это дочерний независимый процесс, в каждом из которых один поток обрабатывает данные. Итого, если у вас в конфиге указано два воркера, nginx по сути работает в трёх процессах, но логика веб-сервера обрабатывается именно двумя.

Далее, про unicorn - это бэкенд. Его существование никак не связано с nginx вообще.

Типичная схема - nginx стартует с количеством воркеров, равным количеству процессоров в системе. Далее, он висит на 80/443 порту и слушает. Приходящие соединения он обрабатывает согласно логике конфигов. То есть, либо сам что-то отдаёт, либо проксирует дальше на бэкенд, снабдив нужными хидерами. Бэкендом уже выступает, например, unicorn, и nginx'у в принципе без разницы, жив он там или нет, он покажет 200 в нормальной ситуации и 504 если unicorn отвалится.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Воркер нгинкса никакого отношения к юникорну не имеет рассматривайте их как независимые друг от друга вещи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы